From 88105764654060b8451385be6a0fd3473c715db9 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Thu, 23 Aug 2012 15:20:44 -0700 Subject: [PATCH] io.streams.256color: adding support for bold and italic. --- extra/io/streams/256color/256color.factor | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/extra/io/streams/256color/256color.factor b/extra/io/streams/256color/256color.factor index 58bdc5a31c..d157dee2d1 100644 --- a/extra/io/streams/256color/256color.factor +++ b/extra/io/streams/256color/256color.factor @@ -60,12 +60,19 @@ intensities [| r i | color>rgb '[ _ distance ] 256colors [ keys swap infimum-by ] [ at ] bi ; -: color>foreground ( color -- str ) +: color>foreground ( color -- string ) color>256color "\e[38;5;%sm" sprintf ; -: color>background ( color -- str ) +: color>background ( color -- string ) color>256color "\e[48;5;%sm" sprintf ; +: font-styles ( font-style -- string ) + H{ + { bold "\e[1m" } + { italic "\e[3m" } + { bold-italic "\e[1m\e[3m" } + } at "" or ; + TUPLE: 256color stream ; C: <256color> 256color @@ -79,7 +86,8 @@ M: 256color stream-format [ [ foreground swap at [ color>foreground ] [ "" ] if* ] [ background swap at [ color>background ] [ "" ] if* ] - bi append [ "\e[0m" surround ] unless-empty + [ font-style swap at [ font-styles ] [ "" ] if* ] + tri 3append [ "\e[0m" surround ] unless-empty ] dip stream>> stream-write ; M: 256color make-span-stream