Class: Janeway::AST::Expression

Inherits:
Object
  • Object
show all
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.

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#nextObject (readonly)

Next expression in the AST, if any



20
21
22
# File 'lib/janeway/ast/expression.rb', line 20

def next
  @next
end

#valueObject

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

#typeString



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