]> gitweb.factorcode.org Git - factor.git/commitdiff
periodic-table: split <element-label> and <element>
authorJohn Benediktsson <mrjbq7@gmail.com>
Sat, 2 Sep 2023 22:55:50 +0000 (15:55 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Sat, 2 Sep 2023 22:55:50 +0000 (15:55 -0700)
extra/periodic-table/periodic-table.factor

index f7e16b7f3eefb6a032f70e56a19da073d1a82b81..feb03da46d46a32004cb3cd07ab965e2937e863a 100644 (file)
@@ -161,13 +161,26 @@ CONSTANT: periodic-table {
     {   f   f   f  90  91  92  93  94  95  96  97  98  99 100 101 102 103   f }
 }
 
-:: <element> ( atomic-number symbol name -- gadget )
+:: <element-label> ( atomic-number symbol name -- gadget )
     vertical <track>
     atomic-number number>string <label>
         [ 10 >>size ] change-font f track-add
     symbol <label> [ t >>bold? ] change-font f track-add
     name <label> [ 8 >>size ] change-font f track-add ;
 
+: <element> ( atomic-number/f -- element )
+    [
+        dup 1 - elements nth [ second swap ] [ first3 ] bi
+        [ <element-label> ] [ group-colors at ] bi*
+    ] [
+        f "" <label> f
+    ] if*
+    [ { 40 35 } >>pref-dim { 5 5 } <border> ]
+    [ [ <solid> >>interior ] when* ] bi* swap [
+        "https://en.wikipedia.org/wiki/" prepend
+        '[ drop _ open-url ] <roll-button>
+    ] unless-empty ;
+
 : <legend> ( -- gadget )
     horizontal <track> { 3 3 } >>gap
     group-colors [
@@ -180,25 +193,8 @@ CONSTANT: periodic-table {
     vertical <track> { 3 3 } >>gap
     periodic-table [
         horizontal <track> { 3 3 } >>gap swap
-        [
-            [
-                [
-                    dup 1 - elements nth [ second swap ] [ first3 ] bi
-                    [ <element> ] [ group-colors at ] bi*
-                ] [
-                    f "" <label> f
-                ] if*
-                [ { 40 35 } >>pref-dim { 5 5 } <border> ]
-                [ [ <solid> >>interior ] when* ] bi*
-                swap [
-                    "https://en.wikipedia.org/wiki/" prepend
-                    '[ drop _ open-url ] <roll-button>
-                ] unless-empty
-                f track-add
-            ] each
-        ] [
-            "" <label> { 20 20 } >>pref-dim f track-add
-        ] if*
+        [ [ <element> f track-add ] each ]
+        [ "" <label> { 20 20 } >>pref-dim f track-add ] if*
         f track-add
     ] each <legend> f track-add ;