]> gitweb.factorcode.org Git - factor.git/commitdiff
hacker-news: add red/green side number colors
authorDoug Coleman <doug.coleman@gmail.com>
Sat, 25 Dec 2021 16:31:37 +0000 (10:31 -0600)
committerDoug Coleman <doug.coleman@gmail.com>
Sat, 25 Dec 2021 16:31:37 +0000 (10:31 -0600)
extra/hacker-news/hacker-news.factor

index ec9a204b7f89ea37c4ed56944f728b0447559b3b..53ad7d065a06d5eb01341dc2f98a8404ec046d98 100644 (file)
@@ -8,6 +8,9 @@ io.styles json.reader kernel make math sequences ui urls ;
 
 IN: hacker-news
 
+CONSTANT: christmas-red HEXCOLOR: bc2c21
+CONSTANT: christmas-green HEXCOLOR: 376627
+
 <PRIVATE
 : hacker-news-ids ( endpoint -- ids )
     "https://hacker-news.firebaseio.com/v0/%s.json?print=pretty" sprintf
@@ -38,6 +41,23 @@ IN: hacker-news
 : hacker-news-job-stories ( n -- seq )
     "jobstories" hacker-news-items ;
 
+: christmas-day? ( -- ? )
+    now dup christmas-day same-day? ;
+
+: number-color ( n -- color )
+    christmas-day? [
+        odd? christmas-red christmas-green ?
+    ] [
+        drop HEXCOLOR: a0a0a0
+    ] if ;
+
+: background-color ( -- color )
+    christmas-day? HEXCOLOR: bc2c21 HEXCOLOR: ff6600 ? ;
+
+: write-number ( n -- )
+    [ "%2d. " sprintf H{ } clone ] keep
+    number-color foreground pick set-at format ;
+
 : write-title ( title url -- )
     '[
         _ presented ,,
@@ -66,7 +86,8 @@ IN: hacker-news
 PRIVATE>
 
 : post. ( post index -- )
-    "%2d. " sprintf write-text {
+    write-number
+    {
         [ [ "title" of ] [ "url" of ] bi write-title ]
         [ post>url host>> " (" ")" surround write-text nl ]
         [ "score" of "    %d points" sprintf write-text ]
@@ -83,10 +104,6 @@ PRIVATE>
         ]
     } cleave ;
 
-: background-color ( -- color )
-    now dup christmas-day same-day?
-    HEXCOLOR: bc2c21 HEXCOLOR: ff6600 ? ;
-
 : banner. ( str -- )
     "http://news.ycombinator.com" >url presented associate
     H{