]> gitweb.factorcode.org Git - factor.git/commitdiff
io.streams.256color: adding support for bold and italic.
authorJohn Benediktsson <mrjbq7@gmail.com>
Thu, 23 Aug 2012 22:20:44 +0000 (15:20 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Thu, 23 Aug 2012 22:20:44 +0000 (15:20 -0700)
extra/io/streams/256color/256color.factor

index 58bdc5a31c907fc0ea564c4b456068a4b7f34d88..d157dee2d16cd9b41f9826cf783e174f8ed84442 100644 (file)
@@ -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