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 == '?'