From 45049110005fb637a66f814327ea8feb854f2560 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stian=20Ha=CC=8Aklev?= Date: Wed, 31 Aug 2016 11:43:42 +0200 Subject: [PATCH] Adding array selector array[0] --- lib/mosql/schema.rb | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/mosql/schema.rb b/lib/mosql/schema.rb index 7e0f119..0946db6 100644 --- a/lib/mosql/schema.rb +++ b/lib/mosql/schema.rb @@ -145,6 +145,14 @@ def find_ns!(ns) def fetch_and_delete_dotted(obj, dotted) pieces = dotted.split(".") + selector = pieces.last + if selector =~ /\[/ + number = Integer(selector.match(/\[(.+?)\]/)[1]) + pieces = pieces[0..-2] + [selector.gsub!("[#{number}]", "")] + else + number = nil + end + breadcrumbs = [] while pieces.length > 1 key = pieces.shift @@ -153,7 +161,12 @@ def fetch_and_delete_dotted(obj, dotted) return nil unless obj.is_a?(Hash) end - val = obj.delete(pieces.first) + if number + ary = obj.delete(selector) + val = ary && ary[number] + else + val = obj.delete(selector) + end breadcrumbs.reverse.each do |obj, key| obj.delete(key) if obj[key].empty?