class Croudia::Base
Public Class Methods
attr_object_reader(attrs)
click to toggle source
@param [Hash] attrs { name: Class, name: Class, … }
# File lib/croudia/base.rb, line 13 def attr_object_reader(attrs) attrs.each_pair do |path, klass| path = [path] unless path.is_a?(Array) attr = path.join('_').to_sym define_method(path.last) do object = instance_variable_get("@#{attr}") unless object object_attrs = @attrs path.each { |p| object_attrs = object_attrs[p.to_s] } object = if object_attrs.nil? nil elsif klass.is_a?(Array) klass = klass.shift object_attrs.map { |o| klass.new(o) } else klass.new(object_attrs) end instance_variable_set("@#{attr}", object) end object end end end
attr_reader(*attrs)
click to toggle source
# File lib/croudia/base.rb, line 4 def attr_reader(*attrs) attrs.each do |attr| define_method(attr) do @attrs[attr.to_s] || @attrs[attr.to_sym] end end end
new(attrs = {})
click to toggle source
Initialize a new object
@param [Hash] attrs @return [Croudia::Base]
# File lib/croudia/base.rb, line 47 def initialize(attrs = {}) @attrs = attrs end
Public Instance Methods
[](name)
click to toggle source
Fetch an attribute
@param [String, Symobol] name
# File lib/croudia/base.rb, line 54 def [](name) __send__(name.to_sym) rescue NoMethodError nil end
attrs()
click to toggle source
@return [Hash]
# File lib/croudia/base.rb, line 61 def attrs @attrs end
inspect()
click to toggle source
# File lib/croudia/base.rb, line 67 def inspect "#<#{self.class} #{@attrs.inspect}>" end