Class: Query::Decompiler
Class Method Summary collapse
Instance Method Summary collapse
- #decompile ⇒ Object
- #format_logic_operator(parsed) ⇒ Object
- #format_not_operator(parsed) ⇒ Object
- #format_value(value) ⇒ Object
-
#initialize(parsed) ⇒ Decompiler
constructor
A new instance of Decompiler.
Constructor Details
#initialize(parsed) ⇒ Decompiler
Returns a new instance of Decompiler.
5 6 7 |
# File 'lib/query/decompiler.rb', line 5 def initialize(parsed) @parsed = parsed end |
Class Method Details
.decompile ⇒ Object
9 10 11 |
# File 'lib/query/decompiler.rb', line 9 def self.decompile(...) new(...).decompile end |
Instance Method Details
#decompile ⇒ Object
13 14 15 16 17 18 19 20 21 |
# File 'lib/query/decompiler.rb', line 13 def decompile if parsed.is_a?(Hash) && parsed.key?(:left) format_logic_operator(parsed) elsif parsed.is_a?(Hash) && parsed.key?(:right) format_not_operator(parsed) else format_value(parsed) end end |
#format_logic_operator(parsed) ⇒ Object
23 24 25 26 27 28 |
# File 'lib/query/decompiler.rb', line 23 def format_logic_operator(parsed) left = self.class.decompile(parsed[:left]) right = self.class.decompile(parsed[:right]) "(#{left} #{parsed[:operator]} #{right})" end |
#format_not_operator(parsed) ⇒ Object
30 31 32 33 34 |
# File 'lib/query/decompiler.rb', line 30 def format_not_operator(parsed) right = self.class.decompile(parsed[:right]) "(#{parsed[:operator]} #{right})" end |
#format_value(value) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/query/decompiler.rb', line 36 def format_value(value) if value.is_a?(Hash) "#{value[:key]}#{value[:operator]}#{format_value(value[:value])}" elsif value.is_a?(String) Query.evaluate(value).is_a?(Hash) ? value.inspect : value elsif value.is_a?(BigDecimal) value.to_s("F") elsif value.is_a?(Range) left = value.first right = value.last operator = value.exclude_end? ? "..." : ".." "#{format_value(left)}#{operator}#{format_value(right)}" else value.to_s end end |