]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/xmode/rules/rules.factor
xmode: fix handling of HASH_CHAR and always rules
[factor.git] / basis / xmode / rules / rules.factor
index 084abb5084c07e6063b78237c6ebecf9474184de..d68fd18af1be6ea0a2302b5c8d06c9c90d098454 100644 (file)
@@ -38,16 +38,11 @@ MEMO: standard-rule-set ( id -- ruleset )
     imports>> push ;
 
 : inverted-index ( hashes key index -- )
+    [ [ { f } ] when-empty ] 2dip
     [ swapd push-at ] 2curry each ;
 
-: ?push-all ( seq1 seq2 -- seq1+seq2 )
-    [
-        over [ [ V{ } like ] dip append! ] [ nip ] if
-    ] when* ;
-
 : rule-set-no-word-sep* ( ruleset -- str )
-    [ no-word-sep>> ]
-    [ keywords>> ] bi
+    [ no-word-sep>> ] [ keywords>> ] bi
     dup [ keyword-map-no-word-sep* ] when
     "_" 3append ;
 
@@ -60,13 +55,13 @@ C: <matcher> matcher
 TUPLE: rule
 no-line-break?
 no-word-break?
-no-escape?
 start
 end
 match-token
 body-token
 delegate
 chars
+escape-rule
 ;
 
 TUPLE: seq-rule < rule ;
@@ -111,10 +106,6 @@ M: regexp text-hash-char drop f ;
     [ dup rule-chars* >upper swap ] dip rules>> inverted-index ;
 
 : add-escape-rule ( string ruleset -- )
-    over [
-        [ <escape-rule> ] dip
-        2dup escape-rule<<
-        add-rule
-    ] [
-        2drop
-    ] if ;
+    '[
+        <escape-rule> _ [ escape-rule<< ] [ add-rule ] 2bi
+    ] unless-empty ;