Module: Archimate::DataModel::Comparison::ClassMethods

Defined in:
lib/archimate/data_model/comparison.rb

Instance Method Summary collapse

Instance Method Details

#attr_namesObject



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_pathsObject



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