class JMESPath::Runtime

@api private

Constants

DEFAULT_PARSER

@api private

Attributes

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 [Boolean] :disable_visit_errors (false) When `true`,

no errors will be raised during runtime processing. Parse errors
will still be raised, but unexpected data sent to visit will
result in nil being returned.

@option options [Parser,CachingParser] :parser

# File lib/jmespath/runtime.rb, line 45
def initialize(options = {})
  @parser = options[:parser] || default_parser(options)
end

Public Instance Methods

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.new(options)
  end
end