module RecursiveStruct::Data
Public Instance Methods
data()
click to toggle source
# File lib/recursive_struct/data.rb, line 3 def data @data ||= {} end
get_data(key)
click to toggle source
# File lib/recursive_struct/data.rb, line 14 def get_data(key) data[key.to_sym] end
send_data(key, *args, &block)
click to toggle source
# File lib/recursive_struct/data.rb, line 18 def send_data(key, *args, &block) data.send(key, *args, &block) end
set_data(key, value)
click to toggle source
# File lib/recursive_struct/data.rb, line 7 def set_data(key, value) key = key.to_sym data[key] = process(value) define_methods(key) end
Private Instance Methods
define_methods(key)
click to toggle source
# File lib/recursive_struct/data.rb, line 34 def define_methods(key) unless respond_to?(key) define_singleton_method(key) { data[key] } define_singleton_method("#{key}=") { |value| data[key] = value } end end
process(value)
click to toggle source
# File lib/recursive_struct/data.rb, line 24 def process(value) if value.is_a?(Hash) RecursiveStruct.new(value) elsif value.is_a?(Array) value.map { |val| process(val) } else value end end