class YamlQuery

Constants

VERSION

Public Class Methods

new(object, options) click to toggle source
# File lib/yamlquery.rb, line 2
def initialize(object, options)
  @object   = object
  @options = options
  tree = parse(@options)
  yqt = YamlQuery::Transform.new
  parsed_query = yqt.apply(tree)
  if options[:debug]
    pp parsed_query
  end
  @keys     = parsed_query[:keys]
  @operator = parsed_query[:operator].to_s
  @arg      = parsed_query[:arg].to_s
end

Public Instance Methods

Private Instance Methods

assign() click to toggle source
# File lib/yamlquery.rb, line 64
def assign
  # not yet implemented
end
compare(value) click to toggle source
# File lib/yamlquery.rb, line 43
def compare(value)
  case @operator
  when ''
    return true
  when '=='
    equal?(value)
  when '!='
    notequal?(value)
  when '!'
    nil?(value)
  when '>='
    ge?(value)
  when '<='
    le?(value)
  when '<'
    lt?(value)
  when '>'
    gt?(value)
  end
end
equal?(value) click to toggle source
# File lib/yamlquery.rb, line 84
def equal?(value)
  case value
  when Array, Hash
    value.include?(@arg)
  else
    value == @arg
  end
end
ge?(value) click to toggle source
# File lib/yamlquery.rb, line 68
def ge?(value)
  value >= @arg
end
gt?(value) click to toggle source
# File lib/yamlquery.rb, line 80
def gt?(value)
  value > @arg
end
le?(value) click to toggle source
# File lib/yamlquery.rb, line 72
def le?(value)
  value <= @arg
end
lt?(value) click to toggle source
# File lib/yamlquery.rb, line 76
def lt?(value)
  value < @arg
end
nil?(value) click to toggle source
# File lib/yamlquery.rb, line 97
def nil?(value)
  case value
  when Array, Hash
    value.empty?
  else
    value.nil?
  end
end
notequal?(value) click to toggle source
# File lib/yamlquery.rb, line 93
def notequal?(value)
  value != @arg
end
parse(options) click to toggle source
# File lib/yamlquery.rb, line 36
def parse(options)
  yqp = YamlQuery::Parser.new(options[:delimiter])
  yqp.parse(options[:query])
rescue Parslet::ParseFailed => failure
  puts failure.cause.ascii_tree
end