Class: JPath::Item

Inherits:
Object
  • Object
show all
Defined in:
lib/jpath/item.rb

Instance Method Summary collapse

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