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