class JMESPath::Runtime
@api private
Constants
- DEFAULT_PARSER
@api private
Attributes
interpreter[R]
@return [Interpreter]
parser[R]
@return [Parser, CachingParser]
Public Class Methods
new(options = {})
click to toggle source
Constructs a new runtime object for evaluating JMESPath expressions.
runtime = JMESPath::Runtime.new runtime.search(expression, data) #=> ...
## Caching
When constructing a {Runtime}, the default parser caches expressions. This significantly speeds up calls to {#search} multiple times with the same expression but different data. To disable caching, pass `:cache_expressions => false` to the constructor or pass a custom `:parser`.
@example Re-use a Runtime, caching enabled by default
runtime = JMESPath::Runtime.new runtime.parser #=> #<JMESPath::CachingParser ...>
@example Disable caching
runtime = JMESPath::Runtime.new(cache_expressions: false) runtime.parser #=> #<JMESPath::Parser ...>
@option options [Boolean] :cache_expressions (true) When `false`, a non
caching parser will be used. When `true`, a shared instance of {CachingParser} is used. Defaults to `true`.
@option options [Parser,CachingParser] :parser
@option options [Interpreter] :interpreter
# File lib/jmespath/runtime.rb, line 42 def initialize(options = {}) @parser = options[:parser] || default_parser(options) @interpreter = options[:interpreter] || TreeInterpreter.new end
Public Instance Methods
search(expression, data)
click to toggle source
@param [String<JMESPath>] expression @param [Hash] data @return [Mixed,nil]
# File lib/jmespath/runtime.rb, line 56 def search(expression, data) @interpreter.visit(@parser.parse(expression), data) end
Private Instance Methods
default_parser(options)
click to toggle source
# File lib/jmespath/runtime.rb, line 62 def default_parser(options) if options[:cache_expressions] == false Parser.new(options) else DEFAULT_PARSER end end