From a421f595d7c88ee052922de87aa0e7e5aede3787 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Wed, 16 Jan 2013 15:53:06 -0800 Subject: [PATCH] reduce object creation --- lib/hana.rb | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/lib/hana.rb b/lib/hana.rb index adc29cc..77d3a80 100644 --- a/lib/hana.rb +++ b/lib/hana.rb @@ -8,16 +8,15 @@ def initialize path @path = Pointer.parse path end - def each - @path.each { |x| yield x } - end - - def to_a; @path.dup; end + def each(&block); @path.each(&block); end + def to_a; @path.dup; end def eval object Pointer.eval @path, object end + ESC = {'^/' => '/', '^^' => '^', '~0' => '~', '~1' => '/'} # :nodoc: + def self.eval list, object list.inject(object) { |o, part| o[(Array === o ? part.to_i : part)] } end @@ -25,11 +24,8 @@ def self.eval list, object def self.parse path return [''] if path == '/' - path.sub(/^\//, '').split(/(?