Module: ApiQueryLanguage::Filtering::FilterParserHelper
- Defined in:
- lib/api_query_language/filtering/filter_parser_helper.rb
Instance Method Summary collapse
- #lexer ⇒ Object
- #parse_condition(tokens) ⇒ Object
- #parse_condition_field(tokens) ⇒ Object
- #parse_condition_field_with_comparison(tokens) ⇒ Object
- #parse_condition_not(tokens) ⇒ Object
- #parse_condition_null_field(tokens) ⇒ Object
- #parse_conditions_and(tokens) ⇒ Object
- #parse_conditions_group(tokens) ⇒ Object
- #parse_conditions_or(tokens) ⇒ Object
- #parse_encoded_value(tokens) ⇒ Object
- #parse_encoded_value_wildcard(tokens) ⇒ Object
- #parse_error_context ⇒ Object
- #parse_query(tokens) ⇒ Object
- #parse_value_expression(tokens) ⇒ Object
- #parse_value_expression_and(tokens) ⇒ Object
- #parse_value_expression_or(tokens) ⇒ Object
Instance Method Details
#lexer ⇒ Object
6 7 8 |
# File 'lib/api_query_language/filtering/filter_parser_helper.rb', line 6 def lexer @lexer ||= ExpressionLexer.new end |
#parse_condition(tokens) ⇒ Object
30 31 32 |
# File 'lib/api_query_language/filtering/filter_parser_helper.rb', line 30 def parse_condition(tokens) Nodes::Conditions.new(nodes: tokens) end |
#parse_condition_field(tokens) ⇒ Object
53 54 55 |
# File 'lib/api_query_language/filtering/filter_parser_helper.rb', line 53 def parse_condition_field(tokens) Nodes::Field.new(field: tokens.first, value: tokens.last) end |
#parse_condition_field_with_comparison(tokens) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/api_query_language/filtering/filter_parser_helper.rb', line 38 def parse_condition_field_with_comparison(tokens) field, comparison = tokens.first Nodes::FieldComparison.new( field:, comparison:, value: parse_value_expression( [ parse_encoded_value( [tokens.last] ) ] ) ) end |
#parse_condition_not(tokens) ⇒ Object
34 35 36 |
# File 'lib/api_query_language/filtering/filter_parser_helper.rb', line 34 def parse_condition_not(tokens) Nodes::ConditionsNot.new(node: tokens[1]) end |
#parse_condition_null_field(tokens) ⇒ Object
57 58 59 |
# File 'lib/api_query_language/filtering/filter_parser_helper.rb', line 57 def parse_condition_null_field(tokens) Nodes::Field.new(field: tokens.first, value: Nodes::Value.new(value: nil)) end |
#parse_conditions_and(tokens) ⇒ Object
22 23 24 |
# File 'lib/api_query_language/filtering/filter_parser_helper.rb', line 22 def parse_conditions_and(tokens) Nodes::ConditionsAnd.new(nodes: [tokens.first, tokens.last]) end |
#parse_conditions_group(tokens) ⇒ Object
18 19 20 |
# File 'lib/api_query_language/filtering/filter_parser_helper.rb', line 18 def parse_conditions_group(tokens) Nodes::ConditionsGroup.new(nodes: tokens[1..-2]) end |
#parse_conditions_or(tokens) ⇒ Object
26 27 28 |
# File 'lib/api_query_language/filtering/filter_parser_helper.rb', line 26 def parse_conditions_or(tokens) Nodes::ConditionsOr.new(nodes: [tokens.first, tokens.last]) end |
#parse_encoded_value(tokens) ⇒ Object
79 80 81 |
# File 'lib/api_query_language/filtering/filter_parser_helper.rb', line 79 def parse_encoded_value(tokens) Nodes::Value.new(value: tokens.first) end |
#parse_encoded_value_wildcard(tokens) ⇒ Object
83 84 85 |
# File 'lib/api_query_language/filtering/filter_parser_helper.rb', line 83 def parse_encoded_value_wildcard(tokens) Nodes::ValueWithWildcard.new(parts: tokens) end |
#parse_error_context ⇒ Object
10 11 12 |
# File 'lib/api_query_language/filtering/filter_parser_helper.rb', line 10 def parse_error_context " at position #{lexer.ss.pos + 1}. Did you forget to encode the value?" end |
#parse_query(tokens) ⇒ Object
14 15 16 |
# File 'lib/api_query_language/filtering/filter_parser_helper.rb', line 14 def parse_query(tokens) Nodes::Root.new(node: tokens.first) end |
#parse_value_expression(tokens) ⇒ Object
75 76 77 |
# File 'lib/api_query_language/filtering/filter_parser_helper.rb', line 75 def parse_value_expression(tokens) Nodes::ValueExpression.new(nodes: tokens) end |
#parse_value_expression_and(tokens) ⇒ Object
68 69 70 71 72 73 |
# File 'lib/api_query_language/filtering/filter_parser_helper.rb', line 68 def parse_value_expression_and(tokens) Nodes::ValueExpressionAnd.new(nodes: [ tokens.first, tokens.last ]) end |
#parse_value_expression_or(tokens) ⇒ Object
61 62 63 64 65 66 |
# File 'lib/api_query_language/filtering/filter_parser_helper.rb', line 61 def parse_value_expression_or(tokens) Nodes::ValueExpressionOr.new(nodes: [ tokens.first, tokens.last ]) end |