Module: Micro::Attributes
- Defined in:
- lib/micro/attributes.rb,
lib/micro/attributes/macros.rb,
lib/micro/attributes/version.rb
Defined Under Namespace
Modules: Macros
Constant Summary collapse
- VERSION =
"0.2.0"
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.included(base) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/micro/attributes.rb', line 8 def self.included(base) base.extend Macros base.class_eval do private_class_method :__attribute private_class_method :__attributes private_class_method :__attributes_defaults end def base.inherited(subclass) self.attributes_data({}) do |data| values = data.each_with_object(a: [], h: {}) do |(k, v), m| v.nil? ? m[:a] << k : m[:h][k] = v end subclass.attributes(values[:a]) subclass.attributes(values[:h]) end end end |
.to_initialize ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/micro/attributes.rb', line 29 def self.to_initialize @to_initialize ||= Module.new do def self.included(base) base.send(:include, Micro::Attributes) base.class_eval(" def initialize(params); self.attributes = params; end\n def with_attribute(key, val); self.class.new(attributes.merge(key => val)); end\n def with_attributes(params); self.class.new(attributes.merge(params)); end\n RUBY\n end\n end\nend\n") |
Instance Method Details
#attribute?(name) ⇒ Boolean
43 44 45 |
# File 'lib/micro/attributes.rb', line 43 def attribute?(name) self.class.attribute?(name) end |
#attributes ⇒ Object
55 56 57 58 59 60 61 62 63 64 |
# File 'lib/micro/attributes.rb', line 55 def attributes state = self.class.attributes.each_with_object({}) do |name, memo| iv_name = "@#{name}" is_defined = instance_variable_defined?(iv_name) memo[name] = instance_variable_get(iv_name) if is_defined end self.class.attributes_data(state) { |data| data } end |