lib/knj/php_parser/functions.rb in knjrbfw-0.0.8 vs lib/knj/php_parser/functions.rb in knjrbfw-0.0.9

- old
+ new

@@ -1,97 +1,97 @@ class Knj::Php_parser - def func_args(func_name) - func_arg_count = 0 - args = [] - - loop do - if match = self.matchclear(/\A\$#{@regex_varname}\s*(,\s*|)/) - args << { - "varname" => match[1], - "newname" => "phpvar_#{match[1]}" - } - elsif match = self.matchclear(/\A\)\s*\{/) - break - else - raise "Could not match function arguments." - end - end - - @retcont += "#{self.tabs}module Knj::Php_parser::Functions\n" - @tabs += 1 - @retcont += "#{self.tabs}def self.#{func_name}(" - - first = true - args.each do |arg| - @retcont += ", " if !first - first = false if first - @retcont += arg["newname"] - end - - @retcont += ")\n" - @tabs += 1 - @funcs_started += 1 - - self.search_newstuff - end - - def func_args_single_given - arg_found = false - - loop do - if !arg_found and match = self.matchclear(/\A\"/) - @retcont += "\"" - self.match_semi - @retcont += ")" - arg_found = true - elsif !arg_found and match = self.matchclear(/\A\$(#{@regex_varname})/) - @retcont += "phpvar_#{match[1]}" - arg_found = true - elsif arg_found and match = self.matchclear(/\A\.\s*/) - @retcont += " + " - arg_found = false - elsif arg_found and match = self.matchclear(/\A;/) - @retcont += "\n" - break - else - raise "Could not figure out what to do." - end - end - end - - def func_args_given - arg_found = false - - loop do - if !arg_found and match = self.matchclear(/\A\"/) - @retcont += "\"" - self.match_semi - @retcont += ")" - arg_found = true - elsif !arg_found and match = self.matchclear(/\A\$(#{@regex_varname})/) - @retcont += "phpvar_#{match[1]}" - arg_found = true - elsif arg_found and match = self.matchclear(/\A\.\s*/) - @retcont += " + " - arg_found = false - elsif arg_found and match = self.matchclear(/\A\)\s*;/) - @retcont += "\n" - break - else - raise "Could not figure out what to do." - end - end - end - - def match_semi - loop do - if match = self.matchclear(/\A[A-z\d_\.]+/) - @retcont += match[0] - elsif match = self.matchclear(/\A\"/) - @retcont += "\"" - break - else - raise "Could not figure out what to do." - end - end - end + def func_args(func_name) + func_arg_count = 0 + args = [] + + loop do + if match = self.matchclear(/\A\$#{@regex_varname}\s*(,\s*|)/) + args << { + "varname" => match[1], + "newname" => "phpvar_#{match[1]}" + } + elsif match = self.matchclear(/\A\)\s*\{/) + break + else + raise "Could not match function arguments." + end + end + + @retcont << "#{self.tabs}module Knj::Php_parser::Functions\n" + @tabs << 1 + @retcont << "#{self.tabs}def self.#{func_name}(" + + first = true + args.each do |arg| + @retcont << ", " if !first + first = false if first + @retcont << arg["newname"] + end + + @retcont << ")\n" + @tabs += 1 + @funcs_started += 1 + + self.search_newstuff + end + + def func_args_single_given + arg_found = false + + loop do + if !arg_found and match = self.matchclear(/\A\"/) + @retcont << "\"" + self.match_semi + @retcont << ")" + arg_found = true + elsif !arg_found and match = self.matchclear(/\A\$(#{@regex_varname})/) + @retcont << "phpvar_#{match[1]}" + arg_found = true + elsif arg_found and match = self.matchclear(/\A\.\s*/) + @retcont << " + " + arg_found = false + elsif arg_found and match = self.matchclear(/\A;/) + @retcont << "\n" + break + else + raise "Could not figure out what to do." + end + end + end + + def func_args_given + arg_found = false + + loop do + if !arg_found and match = self.matchclear(/\A\"/) + @retcont << "\"" + self.match_semi + @retcont << ")" + arg_found = true + elsif !arg_found and match = self.matchclear(/\A\$(#{@regex_varname})/) + @retcont << "phpvar_#{match[1]}" + arg_found = true + elsif arg_found and match = self.matchclear(/\A\.\s*/) + @retcont << " + " + arg_found = false + elsif arg_found and match = self.matchclear(/\A\)\s*;/) + @retcont << "\n" + break + else + raise "Could not figure out what to do." + end + end + end + + def match_semi + loop do + if match = self.matchclear(/\A[A-z\d_\.]+/) + @retcont << match[0] + elsif match = self.matchclear(/\A\"/) + @retcont << "\"" + break + else + raise "Could not figure out what to do." + end + end + end end \ No newline at end of file