Module | Kwartz::EperlExpressionParser |
In: |
kwartz/binding/eperl.rb
|
# File kwartz/binding/eperl.rb, line 20 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