]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/morse/morse.factor
factor: trim using lists
[factor.git] / extra / morse / morse.factor
old mode 100755 (executable)
new mode 100644 (file)
index db86cdb..a63db8f
@@ -1,9 +1,8 @@
 ! Copyright (C) 2007, 2008, 2009 Alex Chapman, 2009 Diego Martinelli
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors ascii assocs biassocs combinators hashtables
-kernel lists literals math namespaces make multiline openal
-openal.alut parser sequences splitting strings synth
-synth.buffers ;
+USING: accessors ascii assocs biassocs combinators kernel
+literals math multiline namespaces openal openal.alut sequences
+splitting strings synth synth.buffers ;
 IN: morse
 
 ERROR: no-morse-ch ch ;
@@ -71,7 +70,7 @@ CONSTANT: morse-code-table $[
         { CHAR: + ".-.-."  }
         { CHAR: - "-....-" }
         { CHAR: _ "..--.-" }
-        { CHAR: " ".-..-." }
+        { CHAR: \" ".-..-." }
         { CHAR: $ "...-..-" }
         { CHAR: @ ".--.-." }
         { CHAR: \s "/" }
@@ -87,19 +86,19 @@ CONSTANT: morse-code-table $[
 <PRIVATE
 
 : word>morse ( str -- morse )
-    [ ch>morse ] { } map-as " " join ;
+    [ ch>morse ] { } map-as join-words ;
 
 : sentence>morse ( str -- morse )
-    " " split [ word>morse ] map " / " join ;
+    split-words [ word>morse ] map " / " join ;
 
 : trim-blanks ( str -- newstr )
     [ blank? ] trim ; inline
 
 : morse>word ( morse -- str )
-    " " split [ morse>ch ] "" map-as ;
+    split-words [ morse>ch ] "" map-as ;
 
 : morse>sentence ( morse -- sentence )
-    "/" split [ trim-blanks morse>word ] map " " join ;
+    "/" split [ trim-blanks morse>word ] map join-words ;
 
 : replace-underscores ( str -- str' )
     [ dup CHAR: _ = [ drop CHAR: - ] when ] map ;
@@ -160,7 +159,7 @@ CONSTANT: beep-freq 880
             { dash-char [ dash ] }
             { word-gap-char [ intra-char-gap ] }
             { unknown-char [ intra-char-gap ] }
-            [ throw-no-morse-ch ]
+            [ no-morse-ch ]
         } case
     ] interleave ;