]> gitweb.factorcode.org Git - factor.git/commitdiff
rosetta-code.metronome: parse command line
authorJon Harper <jon.harper87@gmail.com>
Wed, 16 Oct 2013 22:57:50 +0000 (00:57 +0200)
committerJohn Benediktsson <mrjbq7@gmail.com>
Thu, 17 Oct 2013 20:35:06 +0000 (13:35 -0700)
extra/rosetta-code/metronome/metronome.factor [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
index ad02fcc..e281410
@@ -1,8 +1,8 @@
 ! Copyright (C) 2013 Jon Harper.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors calendar circular colors.constants colors.hsv
-kernel math openal.example sequences timers ui ui.gadgets
-ui.pens.solid ;
+command-line kernel math math.parser namespaces openal.example
+sequences timers ui ui.gadgets ui.pens.solid ;
 IN: rosetta-code.metronome
 
 : bpm>duration ( bpm -- duration ) 60 swap / seconds ;
@@ -38,7 +38,19 @@ M: metronome-gadget ungraft*
 
 M: metronome-gadget pref-dim* drop { 200 200 } ;
 
-: metronome-example ( -- )
-    [ 60 { 440 220 330 } <metronome-gadget> "Metronome" open-window ] with-ui ;
+: metronome-defaults ( -- bpm notes ) 60 { 440 220 330 } ;
 
-MAIN: metronome-example
+: metronome-ui ( bpm notes -- ) <metronome-gadget> "Metronome" open-window ;
+
+: metronome-example ( -- ) metronome-defaults metronome-ui ;
+
+: (metronome-cmdline) ( args -- bpm notes )
+    [ string>number ] map unclip swap ;
+
+: metronome-cmdline ( -- bpm notes )
+    command-line get [ metronome-defaults ] [ (metronome-cmdline) ] if-empty ;
+
+: metronome-main ( -- )
+     [ metronome-cmdline metronome-ui ] with-ui ;
+
+MAIN: metronome-main