]> gitweb.factorcode.org Git - factor.git/commitdiff
sequences.extras: adding ?trim.
authorJohn Benediktsson <mrjbq7@gmail.com>
Wed, 18 Jul 2012 18:41:23 +0000 (11:41 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Wed, 18 Jul 2012 18:41:23 +0000 (11:41 -0700)
extra/sequences/extras/extras-tests.factor
extra/sequences/extras/extras.factor

index f8e794446031bdac517ec3607a0fc00306f87968..52aff0a3078c791eac3a4c4e3ed6bf0046255586 100644 (file)
@@ -77,3 +77,6 @@ IN: sequences.extras.tests
 
 { { } } [ "ABC" [ ] { } trim-as ] unit-test
 { "ABC" } [ { 32 65 66 67 32 } [ blank? ] "" trim-as ] unit-test
+
+{ t } [ "ABC" dup [ blank? ] ?trim [ identity-hashcode ] bi@ = ] unit-test
+{ "ABC" } [ " ABC " [ blank? ] ?trim ] unit-test
index 7d80437e2c36738cdd9c3af42baccdbfbec70d68..2ac859bd1034bf03c45de6d20907c87c8cc612c5 100644 (file)
@@ -201,3 +201,15 @@ PRIVATE>
 
 : trim-as ( ... seq quot: ( ... elt -- ... ? ) exemplar -- ... newseq )
     [ trim-slice ] [ like ] bi* ; inline
+
+<PRIVATE
+
+: last-unsafe ( seq -- elt ) [ length 1 - ] [ nth-unsafe ] bi ;
+
+PRIVATE>
+
+: ?trim ( ... seq quot: ( ... elt -- ... ? ) -- ... seq/newseq )
+    over empty? [ drop ] [
+        over [ first-unsafe ] [ last-unsafe ] bi pick bi@ or
+        [ trim ] [ drop ] if
+    ] if ; inline