Class: Janeway::AST::Expression
- Inherits:
-
Object
- Object
- Janeway::AST::Expression
- Defined in:
- lib/janeway/ast/expression.rb
Overview
Base class for jsonpath expressions.
Every AST node is a subclass of this. This includes selectors, root and child identifiers, descendant segments, and the nodes that occur within a filter selector such as the current node identifier, operators and literals.
Direct Known Subclasses
BinaryOperator, Boolean, ChildSegment, CurrentNode, Function, Null, Number, RootNode, Selector, StringType, UnaryOperator
Instance Attribute Summary collapse
-
#next ⇒ Object
readonly
Next expression in the AST, if any.
-
#value ⇒ Object
Value provided by subclass constructor.
Instance Method Summary collapse
-
#indented(level, msg) ⇒ String
Return the given message, indented.
-
#initialize(val = nil) ⇒ Expression
constructor
A new instance of Expression.
-
#literal? ⇒ Boolean
Return true if this is a literal expression.
-
#singular_query? ⇒ Boolean
True if this is the root of a singular-query.
- #tree(level) ⇒ Array
- #type ⇒ String
Constructor Details
#initialize(val = nil) ⇒ Expression
22 23 24 25 26 |
# File 'lib/janeway/ast/expression.rb', line 22 def initialize(val = nil) # don't set the instance variable if unused, because it makes the # "#inspect" output cleaner in rspec test failures @value = val unless val.nil? # literal false must be stored though! end |
Instance Attribute Details
#next ⇒ Object (readonly)
Next expression in the AST, if any
20 21 22 |
# File 'lib/janeway/ast/expression.rb', line 20 def next @next end |
#value ⇒ Object
Value provided by subclass constructor.
17 18 19 |
# File 'lib/janeway/ast/expression.rb', line 17 def value @value end |
Instance Method Details
#indented(level, msg) ⇒ String
Return the given message, indented
39 40 41 |
# File 'lib/janeway/ast/expression.rb', line 39 def indented(level, msg) format('%s%s', (INDENT * level), msg) end |
#literal? ⇒ Boolean
Return true if this is a literal expression
51 52 53 |
# File 'lib/janeway/ast/expression.rb', line 51 def literal? false end |
#singular_query? ⇒ Boolean
True if this is the root of a singular-query.
59 60 61 |
# File 'lib/janeway/ast/expression.rb', line 59 def singular_query? false end |
#tree(level) ⇒ Array
45 46 47 |
# File 'lib/janeway/ast/expression.rb', line 45 def tree(level) [indented(level, to_s)] end |
#type ⇒ String
29 30 31 32 |
# File 'lib/janeway/ast/expression.rb', line 29 def type name = self.class.to_s.split('::').last # eg. Janeway::AST::FunctionCall => "FunctionCall" Helpers.camelcase_to_underscore(name) # eg. "FunctionCall" => "function_call" end |