lib/modl/parser/evaluator.rb in modl-0.3.6 vs lib/modl/parser/evaluator.rb in modl-0.3.7

- old
+ new

@@ -89,76 +89,9 @@ end success = true end [value1, success] end - - def evaluate_old - result = false - if @key - if @key.include?('%') - value1, _ignore = MODL::Parser::RefProcessor.deref(@key, @global) - else - key = @key - ikey = key.to_i - if ikey.to_s == key - index_val = @global.index[ikey] - value1 = index_val.respond_to?(:text) ? index_val.text : nil - else - pair = @global.pair(key) - return false unless pair - - value1 = pair.text - end - end - - @values.each do |value| - value2 = value.text - value2, _ignore = MODL::Parser::RefProcessor.deref(value2, @global) if value2.is_a?(String) && value2.include?('%') - value2 = @global.pair(value.text).text if @global.pair(value.text) - - case @operator - when '=' - wild = value2.is_a?(String) && value2.include?('*') ? true : false - if wild - regex = '^' - value2.each_char do |c| - regex << (c == '*' ? '.*' : c) - end - result |= !value1.match(regex).nil? - else - result |= value1 == value2 - end - when '>' - result |= value1 > value2 - when '<' - result |= value1 < value2 - when '>=' - result |= value1 >= value2 - when '<=' - result |= value1 <= value2 - end - break if result # shortcut if we have a matching value - end - elsif @values.length == 1 - key = @values[0].text - if key.is_a?(String) - key = key.start_with?('%') ? Sutil.tail(key) : key - end - the_pair = @global.pair(key) - if the_pair - result = the_pair.text - else - return true if @values[0].trueVal - return false if @values[0].falseVal - return false if @values[0].string - - result = @values[0].evaluate - end - end - result - end - end end end