module Contender::CopyOnWriteStructure::ClassMethods

Attributes

delegated_type[R]

Public Instance Methods

accessor(*args)
Alias for: accessors
accessors(*args) click to toggle source
# File lib/contender/copy_on_write_structure.rb, line 12
def accessors(*args)
  @accessors ||= Set.new

  args.each do |method|
    @accessors.add method

    def_delegator :current_reference, method
  end
end
Also aliased as: accessor
accessors!() click to toggle source
# File lib/contender/copy_on_write_structure.rb, line 22
def accessors!
  methods = Set.new(delegated_type.instance_methods(false))

  methods = methods - @accessors if @accessors
  methods = methods - @mutators if @mutators

  methods.each do |method|
    def_delegator :current_reference, method
  end
end
delegate_to(type) click to toggle source
# File lib/contender/copy_on_write_structure.rb, line 52
def delegate_to(type)
  @delegated_type = type
end
mutator(*args)
Alias for: mutators
mutators(*args) click to toggle source
# File lib/contender/copy_on_write_structure.rb, line 33
      def mutators(*args)
        @mutators ||= Set.new

        args.each do |method|
          @mutators.add method

          class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
            def #{method}(*args, &block)
              update_reference do |current|
                current.#{method}(*args, &block)
              end
            end
          RUBY_EVAL
        end
      end
Also aliased as: mutator