@@ -53,6 +53,7 @@ def parallel_regexp_compile(subs_hash)
5353
5454 def compile_rule ( r , map = @map , wrapper = false )
5555 c = ""
56+ return c if r . reverse_run == true
5657 case r
5758 when Interscript ::Node ::Stage
5859 c += "map.stages.#{ r . name } = function(s) {\n "
@@ -75,6 +76,7 @@ def compile_rule(r, map = @map, wrapper = false)
7576 raise ArgumentError , "Can't parallelize rules with :not_before" if i . not_before
7677 raise ArgumentError , "Can't parallelize rules with :not_after" if i . not_after
7778
79+ next if i . reverse_run == true
7880 a << [ compile_item ( i . from , map , :par ) , compile_item ( i . to , map , :parstr ) ]
7981 end
8082 ah = a . hash . abs
@@ -88,7 +90,8 @@ def compile_rule(r, map = @map, wrapper = false)
8890 a = [ ]
8991 Interscript ::Stdlib . deterministic_sort_by_max_length ( r . children ) . each do |i |
9092 raise ArgumentError , "Can't parallelize #{ i . class } " unless Interscript ::Node ::Rule ::Sub === i
91-
93+
94+ next if i . reverse_run == true
9295 a << [ build_regexp ( i , map ) , compile_item ( i . to , map , :parstr ) ]
9396 end
9497 ah = a . hash . abs
@@ -102,6 +105,8 @@ def compile_rule(r, map = @map, wrapper = false)
102105 from = %{"#{ build_regexp ( r , map ) . gsub ( "/" , "\\ \\ /" ) } "}
103106 if r . to == :upcase
104107 to = 'function(a){return a.toUpperCase();}'
108+ elsif r . to == :downcase
109+ to = 'function(a){return a.toLowerCase();}'
105110 else
106111 to = compile_item ( r . to , map , :str )
107112 end
0 commit comments