Class: Hana::Pointer
Constant Summary collapse
- ESC =
:nodoc:
{'^/' => '/', '^^' => '^', '~0' => '~', '~1' => '/'}
Class Method Summary collapse
Instance Method Summary collapse
- #each(&block) ⇒ Object
- #eval(object) ⇒ Object
-
#initialize(path) ⇒ Pointer
constructor
A new instance of Pointer.
Constructor Details
Class Method Details
.eval(list, object) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/hana.rb', line 21 def self.eval list, object list.inject(object) { |o, part| return nil unless o if Array === o raise Patch::IndexError unless part =~ /\A(?:\d|[1-9]\d+)\Z/ part = part.to_i end o[part] } end |
.parse(path) ⇒ Object
33 34 35 36 37 38 39 40 41 42 |
# File 'lib/hana.rb', line 33 def self.parse path return [''] if path == '/' parts = path.sub(/^\//, '').split(/(?<!\^)\//).each { |part| part.gsub!(/\^[\/^]|~[01]/) { |m| ESC[m] } } parts.push("") if path[-1] == '/' parts end |