Module: Micro::Attributes
- Defined in:
- lib/micro/attributes.rb,
lib/micro/attributes/utils.rb,
lib/micro/attributes/macros.rb,
lib/micro/attributes/version.rb
Defined Under Namespace
Constant Summary collapse
- VERSION =
"0.6.1"
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.included(base) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/micro/attributes.rb', line 9 def self.included(base) base.extend Macros base.class_eval do private_class_method :__attribute private_class_method :__attributes private_class_method :__attribute_data private_class_method :__attribute_data! private_class_method :__attributes_data end def base.inherited(subclass) self.attributes_data({}).each do |name, value| subclass.attribute(value.nil? ? name : {name => value}) end end end |
.to_initialize ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/micro/attributes.rb', line 27 def self.to_initialize @to_initialize ||= Module.new do def self.included(base) base.send(:include, Micro::Attributes) base.class_eval(" def initialize(arg)\n self.attributes = arg\n end\n\n def with_attribute(key, val)\n self.class.new(attributes.merge(key => val))\n end\n\n def with_attributes(arg)\n self.class.new(attributes.merge(arg))\n end\n RUBY\n end\n end\nend\n") |
Instance Method Details
#attribute?(name) ⇒ Boolean
49 50 51 |
# File 'lib/micro/attributes.rb', line 49 def attribute?(name) self.class.attribute?(name) end |
#attributes ⇒ Object
59 60 61 62 63 64 65 66 67 68 |
# File 'lib/micro/attributes.rb', line 59 def attributes state = self.class.attributes.each_with_object({}) do |name, memo| if instance_variable_defined?(iv_name = "@#{name}") memo[name] = instance_variable_get(iv_name) end end self.class.attributes_data(state) end |