Module: Archimate::DataModel::Comparison::ClassMethods
- Defined in:
- lib/archimate/data_model/comparison.rb
Instance Method Summary collapse
- #attr_names ⇒ Object
- #comparison_attr_paths ⇒ Object
-
#model_attr(attr_sym, comparison_attr: nil, writable: false) ⇒ Object
Define the reader method (or call model_attr) Append the attr_sym to the @@attrs for the class.
Instance Method Details
#attr_names ⇒ Object
77 78 79 |
# File 'lib/archimate/data_model/comparison.rb', line 77 def attr_names class_variable_defined?(:@@attr_names) ? class_variable_get(:@@attr_names) : [] end |
#comparison_attr_paths ⇒ Object
81 82 83 |
# File 'lib/archimate/data_model/comparison.rb', line 81 def comparison_attr_paths class_variable_defined?(:@@comparison_attr_paths) ? class_variable_get(:@@comparison_attr_paths) : [] end |
#model_attr(attr_sym, comparison_attr: nil, writable: false) ⇒ Object
Define the reader method (or call model_attr) Append the attr_sym to the @@attrs for the class
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/archimate/data_model/comparison.rb', line 60 def model_attr(attr_sym, comparison_attr: nil, writable: false) send(:attr_reader, attr_sym) attrs = attr_names << attr_sym class_variable_set(:@@attr_names, attrs.uniq) if comparison_attr != :no_compare attrs = comparison_attr_paths << (comparison_attr ? [attr_sym, comparison_attr] : attr_sym) class_variable_set(:@@comparison_attr_paths, attrs.uniq) end if writable define_method("#{attr_sym}=".to_sym) do |val| instance_variable_set(:@hash_key, nil) instance_variable_set("@#{attr_sym}".to_sym, val) end end end |