class Krikri::JsonParser::Value

JsonParser::Value @see Krikri::Parser::Value

Attributes

node[RW]

Public Class Methods

new(node) click to toggle source
# File lib/krikri/parsers/json_parser.rb, line 25
def initialize(node)
  @node = node
end

Public Instance Methods

attributes() click to toggle source
# File lib/krikri/parsers/json_parser.rb, line 29
def attributes
  raise NotImplementedError, 'Attributes are not supported for JSON'
end
children() click to toggle source
# File lib/krikri/parsers/json_parser.rb, line 33
def children
  @node.is_a?(Hash) ? @node.keys : []
end
value() click to toggle source
# File lib/krikri/parsers/json_parser.rb, line 37
def value
  @node.is_a?(Hash) ? @node.to_s : @node
end
values?() click to toggle source
# File lib/krikri/parsers/json_parser.rb, line 41
def values?
  !select_values.empty?
end

Private Instance Methods

attribute(name) click to toggle source
# File lib/krikri/parsers/json_parser.rb, line 66
def attribute(name)
  msg = "Attributes are not supported for JSON; got attribute `#{name}`"
  raise NotImplementedError, msg
end
get_child_nodes(name, node: @node) click to toggle source

@see Krikri::Parser#get_child_nodes

@param name_exp [String] Object property name @return [Krikri::Parser::ValueArray]

# File lib/krikri/parsers/json_parser.rb, line 52
def get_child_nodes(name, node: @node)
  return get_child_nodes(name, node: node.flatten.first) if
    node.is_a?(Array)

  if node[name].is_a?(Array)
    vals = node[name].map { |node| self.class.new(node) }
  else
    vals = Array(self.class.new(node[name]))
  end

  vals.reject! { |n| n.node.nil? }
  Krikri::Parser::ValueArray.new(vals)
end
select_values() click to toggle source
# File lib/krikri/parsers/json_parser.rb, line 71
def select_values
  @node.is_a?(Hash) ? [] : @node
end