lib/gillbus/helpers/parser.rb in gillbus-0.19.0 vs lib/gillbus/helpers/parser.rb in gillbus-0.20.0
- old
+ new
@@ -38,16 +38,19 @@
end
private
def fetch_value(key:, root:)
+ target_doc = root ? doc[root] : doc
+ return unless target_doc
+
if key.is_a?(Regexp)
- doc.select { |k| k =~ key }
- elsif root
- doc[root] && doc[root][key]
+ target_doc.select { |k| k =~ key }
+ elsif key.is_a?(Array)
+ key.map { |k| Array(target_doc[k]) }.inject(&:+)
else
- doc[key]
+ target_doc[key]
end
end
def make_one_or_many(type, val)
# [:type]
@@ -79,9 +82,11 @@
Array(arg)
end
def string(val)
return if val == NULL_CONST
+ # если это тег с атрибутами - возвращаем только содержимое тега
+ return val.last if val.is_a?(Array) && val.size == 2
val
end
def bool(val)
val == TRUE_CONST