Module | Kwartz::PerlExpressionParser |
In: |
kwartz/binding/perl.rb
|
# File kwartz/binding/perl.rb, line 17 def parse_expr_str(expr_str, linenum) case expr_str when /\A(\w+)\z/ # variable expr = '$'+$1 when /\A(\w+)\.(\w+)\z/ # object.property expr = "$#{$1}->{#{$2}}" when /\A(\w+)\[(.*?'|".*?"|:\w+)\]\z/ # hash key = $2[0] == ?: ? "'#{$2[1..-1]}'" : $2 expr = "$#{$1}{#{key}}" when /\A(\w+)\[(\w+)\]\z/ # array or hash begin expr = "$#{$1}[#{Integer($2)}]" rescue ArgumentError expr = "$#{$1}[$#{$2}]" end else raise convert_error("'#{expr_str}': invalid expression.", linenum) end return expr end