]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/irc/messages/parser/parser.factor
factor: trim using lists
[factor.git] / extra / irc / messages / parser / parser.factor
index 33964aef71bbc96b257934cc66cd06c455c33f19..64abb07c3bf8ca91278112b79ed534b1a2dfd7cd 100644 (file)
@@ -1,28 +1,20 @@
 ! Copyright (C) 2009 Bruno Deferrari
 ! See http://factorcode.org/license.txt for BSD license.
-USING: kernel fry splitting ascii accessors combinators
-       arrays classes.tuple math.order words assocs
-       irc.messages.base sequences ;
+USING: accessors irc.messages.base kernel sequences splitting ;
 IN: irc.messages.parser
 
 <PRIVATE
 : split-at-first ( seq separators -- before after )
     dupd '[ _ member? ] find [ cut rest ] [ swap ] if ;
 
-: split-trailing ( string -- string string/f ) ":" split1 ;
-: remove-heading-: ( seq -- seq ) ":" ?head drop ;
-
-: split-prefix ( string -- string/f string )
-    dup ":" head? [
-        remove-heading-: " " split1
-    ] [ f swap ] if ;
-
+! ":ircuser!n=user@isp.net JOIN :#factortest"
 : split-message ( string -- prefix command parameters trailing )
-    split-prefix split-trailing
-    [ [ blank? ] trim " " split unclip swap ] dip ;
+    ":" ?head [ " " split1 ] [ f swap ] if
+    ":" split1
+    [ split-words harvest unclip swap ] dip ;
 
 : sender ( irc-message -- sender )
-    prefix>> [ remove-heading-: "!" split-at-first drop ] [ f ] if* ;
+    prefix>> [ ":" ?head drop "!" split-at-first drop ] [ f ] if* ;
 PRIVATE>
 
 : string>irc-message ( string -- irc-message )