# frozen_string_literal: true # 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