houdini/lib/get_data.rb

35 lines
687 B
Ruby
Raw Normal View History

# frozen_string_literal: true
2020-06-12 20:03:43 +00:00
# License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later
# Full license explanation at https://github.com/houdiniproject/houdini/blob/master/LICENSE
module GetData
def self.chain(obj, *methods)
methods.each do |m|
if m.is_a?(Array)
params = m[1..-1]
m = m[0]
end
if !obj.nil? && obj.respond_to?(m)
obj = obj.send(m, *params)
elsif obj.respond_to?(:has_key?) && obj.key?(m)
obj = obj[m]
else
return nil
end
end
obj
end
def self.hash(h, *keys)
keys.each do |k|
if h.key?(k)
h = h[k]
else
return nil
end
end
h
end
end