lib/airborne/path_matcher.rb in airborne-0.0.17 vs lib/airborne/path_matcher.rb in airborne-0.0.18

- old
+ new

@@ -5,13 +5,13 @@ parts = path.split('.') parts.each_with_index do |part, index| if part == '*' || part == '?' type = part raise "Expected #{path} to be array got #{json.class} from JSON response" unless json.class == Array - if index < parts.length - 1 + if index < parts.length.pred json.each do |element| - sub_path = parts[(index + 1)..(parts.length-1)].join('.') + sub_path = parts[(index.next)...(parts.length)].join('.') get_by_path(sub_path, element, &block) end return end next @@ -19,10 +19,10 @@ if /^[\d]+(\.[\d]+){0,1}$/ === part part = part.to_i json = json[part] else json = json[part.to_sym] - raise "Expected #{path} to be object or array got #{json.class} from JSON response" unless json.class == Array || json.class == Hash || json.nil? + raise "Expected #{path} to be object or array got #{json.class} from JSON response" unless [Array, Hash, NilClass].include?(json.class) end end if type == '*' json.each{|part| yield part} elsif type == '?'