houdini/lib/get_data.rb
2019-08-02 19:07:29 +02:00

33 lines
630 B
Ruby

# frozen_string_literal: true
# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
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