Class: JPath::Item
- Inherits:
-
Object
- Object
- JPath::Item
- Defined in:
- lib/jpath/item.rb
Instance Method Summary collapse
- #[](pointer) ⇒ Object
- #ancestors(pointer) ⇒ Object
- #attributes(pointer) ⇒ Object
- #children(pointer) ⇒ Object
- #descendants(pointer) ⇒ Object
- #following(pointer) ⇒ Object
-
#initialize(hash) ⇒ Item
constructor
A new instance of Item.
- #parent(pointer) ⇒ Object
- #preceding(pointer) ⇒ Object
Constructor Details
#initialize(hash) ⇒ Item
Returns a new instance of Item.
4 5 6 |
# File 'lib/jpath/item.rb', line 4 def initialize(hash) @hash = hash end |
Instance Method Details
#[](pointer) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/jpath/item.rb', line 8 def [](pointer) result = @hash if pointer.is_a?(String) pointer = Pointer.parse(pointer) end pointer.each do |key| unless result.is_a?(Array) or result.is_a?(Hash) return nil end if result.is_a?(Array) && !key.is_a?(Numeric) return nil end result = result[key] end result end |
#ancestors(pointer) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/jpath/item.rb', line 39 def ancestors(pointer) if pointer.is_a?(String) pointer = Pointer.parse(pointer) end obj = parent(pointer) if obj.nil? [] else [obj, ancestors(obj)].flatten end end |
#attributes(pointer) ⇒ Object
51 52 53 |
# File 'lib/jpath/item.rb', line 51 def attributes(pointer) enum_for(:each_attribute, pointer) end |
#children(pointer) ⇒ Object
55 56 57 |
# File 'lib/jpath/item.rb', line 55 def children(pointer) enum_for(:each_child, pointer) end |
#descendants(pointer) ⇒ Object
59 60 61 |
# File 'lib/jpath/item.rb', line 59 def descendants(pointer) enum_for(:each_descendant, pointer) end |
#following(pointer) ⇒ Object
63 64 65 |
# File 'lib/jpath/item.rb', line 63 def following(pointer) enum_for(:each_following, pointer) end |
#parent(pointer) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/jpath/item.rb', line 25 def parent(pointer) if pointer.is_a?(String) pointer = Pointer.parse(pointer) end if pointer.top? return nil end if pointer.index? pointer.grandparent else pointer.parent end end |
#preceding(pointer) ⇒ Object
67 68 69 |
# File 'lib/jpath/item.rb', line 67 def preceding(pointer) enum_for(:each_preceding, pointer) end |