Module: MethodFound::AttributeMethods

Defined in:
lib/method_found/attribute_methods.rb

Overview

Examples:

class Person < Struct.new(:attributes)
  include MethodFound::AttributeMethods

  attribute_method_suffix ''
  attribute_method_suffix '='
  attribute_method_suffix '_contrived?'
  attribute_method_prefix 'clear_'
  attribute_method_affix  prefix: 'reset_', suffix: '_to_default!'

  define_attribute_methods :name

  def initialize(attributes = {})
    super(attributes)
  end

  private

  def attribute_contrived?(attr)
    true
  end

  def clear_attribute(attr)
    send("#{attr}=", nil)
  end

  def reset_attribute_to_default!(attr)
    send("#{attr}=", 'Default Name')
  end

  def attribute(attr)
    attributes[attr]
  end

  def attribute=(attr, value)
    attributes[attr] = value
  end
end

Class Method Summary collapse

Class Method Details

.included(base) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/method_found/attribute_methods.rb', line 47

def self.included(base)
  base.instance_eval do
    def attribute_method_affix(prefix: '', suffix: '')
      include(AttributeInterceptor.new(prefix: prefix, suffix: suffix))
    end

    def attribute_method_suffix(suffix)
      include(AttributeInterceptor.new(suffix: suffix))
    end

    def attribute_method_prefix(prefix)
      include(AttributeInterceptor.new(prefix: prefix))
    end

    def define_attribute_methods(*attributes)
      ancestors.each do |ancestor|
        ancestor.define_attribute_methods(*attributes) if ancestor.is_a?(AttributeInterceptor)
      end
    end
  end
end