module AttributesInitializable::ClassMethods
Public Instance Methods
attr_accessor_init(*symbols)
click to toggle source
generate attr_accessor + initialize params
-
symbols : attribute names
# File lib/attributes_initializable.rb, line 12 def attr_accessor_init(*symbols) generate_attr_accessor(symbols) generate_initializer(symbols) end
attr_reader_init(*symbols)
click to toggle source
generate attr_reader + initialize params
-
symbols : attribute names
# File lib/attributes_initializable.rb, line 20 def attr_reader_init(*symbols) generate_attr_reader(symbols) generate_initializer(symbols) end
attr_writer_init(*symbols)
click to toggle source
generate attr_writer + initialize params
-
symbols : attribute names
# File lib/attributes_initializable.rb, line 28 def attr_writer_init(*symbols) generate_attr_writer(symbols) generate_initializer(symbols) end
Private Instance Methods
generate_attr(symbols, type)
click to toggle source
# File lib/attributes_initializable.rb, line 47 def generate_attr(symbols, type) results = symbols.reduce([]) do |results, sym| fail TypeError, "invalid type #{sym.class}. you have to use Symbol" unless sym.class == Symbol results << ":#{sym}" end class_eval "attr_#{type} #{results.join(',')}" end
generate_attr_accessor(symbols)
click to toggle source
# File lib/attributes_initializable.rb, line 35 def generate_attr_accessor(symbols) generate_attr symbols, :accessor end
generate_attr_reader(symbols)
click to toggle source
# File lib/attributes_initializable.rb, line 39 def generate_attr_reader(symbols) generate_attr symbols, :reader end
generate_attr_writer(symbols)
click to toggle source
# File lib/attributes_initializable.rb, line 43 def generate_attr_writer(symbols) generate_attr symbols, :writer end
generate_initializer(symbols)
click to toggle source
# File lib/attributes_initializable.rb, line 55 def generate_initializer(symbols) instance_eval do define_method :initialize do |values = nil, &block| return block.call self if block symbols.each { |symbol|instance_variable_set("@#{symbol}", values[symbol]) } end end end