Class: JSONP3::WildcardSelector

Inherits:
Selector
  • Object
show all
Defined in:
lib/json_p3/selector.rb

Overview

The wildcard selector selects all elements from an array or values from a hash.

Instance Attribute Summary

Attributes inherited from Selector

#token

Instance Method Summary collapse

Methods inherited from Selector

#initialize, #singular?

Constructor Details

This class inherits a constructor from JSONP3::Selector

Instance Method Details

#==(other) ⇒ Object Also known as: eql?



176
177
178
# File 'lib/json_p3/selector.rb', line 176

def ==(other)
  self.class == other.class && @token == other.token
end

#hashObject



182
183
184
# File 'lib/json_p3/selector.rb', line 182

def hash
  @token.hash
end

#resolve(node) ⇒ Object



144
145
146
147
148
149
150
151
152
# File 'lib/json_p3/selector.rb', line 144

def resolve(node)
  if node.value.is_a? Hash
    node.value.map { |k, v| node.new_child(v, k) }
  elsif node.value.is_a? Array
    node.value.map.with_index { |e, i| node.new_child(e, i) }
  else
    []
  end
end

#resolve_enum(node) ⇒ Object



154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'lib/json_p3/selector.rb', line 154

def resolve_enum(node)
  if node.value.is_a? Hash
    Enumerator.new do |yielder|
      node.value.each do |k, v|
        yielder << node.new_child(v, k)
      end
    end
  elsif node.value.is_a? Array
    Enumerator.new do |yielder|
      node.value.each.with_index do |e, i|
        yielder << node.new_child(e, i)
      end
    end
  else
    []
  end
end

#to_sObject



172
173
174
# File 'lib/json_p3/selector.rb', line 172

def to_s
  "*"
end