Module: Traversable
- Included in:
- Schemable
- Defined in:
- lib/traversable.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#ref(key_path) ⇒ Object
reference([“a”, “b”]) is a safe version of self[“b”].
- #traverse(&block) ⇒ Object
Class Method Details
._traverse(key, value, path, &block) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/traversable.rb', line 9 def self._traverse(key, value, path, &block) if value.is_a?(Hash) value.each do |k, v| p = path + [key] yield(p, value) _traverse(k, v, p, &block) end else yield(path + [key], value) end end |
Instance Method Details
#ref(key_path) ⇒ Object
reference([“a”, “b”]) is a safe version of self[“b”]
22 23 24 25 26 27 28 |
# File 'lib/traversable.rb', line 22 def ref(key_path) object = self key_path.each do |key| object = object.is_a?(Hash) ? object[key] : nil end object end |
#traverse(&block) ⇒ Object
3 4 5 6 7 |
# File 'lib/traversable.rb', line 3 def traverse(&block) self.each do |key, value| Traversable._traverse(key, value, [], &block) end end |