diff options
Diffstat (limited to 'parse.rb')
-rw-r--r-- | parse.rb | 16 |
1 files changed, 5 insertions, 11 deletions
@@ -14,32 +14,26 @@ def sub_vars(string) return outvars.join(", "), blockvars.join(", ") end -def sub_funs(string, funs) - funs.each do |fun| - string.gsub!(/#{fun}\((.*?)\)/, "#{fun}.call(\\1)") - end - return string -end - lines = $stdin.readlines.map(&:chomp) funs = [] puts "require './patter'" +puts "include Patter" puts lines.each do |line| if line =~ /\s*([a-z_][a-zA-Z0-9_]*?)\((.*)\) is\s*$/ then unless funs.include?($1) then funs << $1 - puts "#{$1} = Patter::Fun.new" + puts "patterfun#{$1} = Patter::Fun.new(:#{$1})" end arg, blk = sub_vars($2) if blk.empty? then - puts "#{$1}.when(#{arg}) do" + puts "patterfun#{$1}.when(#{arg}) do" else - puts "#{$1}.when(#{arg}) do |#{blk}|" + puts "patterfun#{$1}.when(#{arg}) do |#{blk}|" end else - puts sub_funs(line, funs) + puts line end end |