module Contextualizer

Constants

OPTIONAL
VERSION

Public Class Methods

extended(klass) click to toggle source
# File lib/contextualizer.rb, line 16
def self.extended(klass)
  klass.class_eval do
    attr_reader :context
    @__setter = Setter.new
    include Contextualizer.init_for(@__setter, false)
  end
end
init_for(setter, inherited = true) click to toggle source
Calls superclass method
# File lib/contextualizer.rb, line 24
def self.init_for(setter, inherited = true)
  Module.new do |mod|
    if inherited
      mod.send(:define_method, :initialize) do |args = {}|
        super(args)
        setter.set(self, args)
      end
    else
      mod.send(:define_method, :initialize) do |args = {}|
        super()
        setter.set(self, args)
      end
    end
  end
end

Public Instance Methods

context(*attrs, **opt_attrs) click to toggle source
# File lib/contextualizer.rb, line 6
def context(*attrs, **opt_attrs)
  unless @__setter
    @__setter = Setter.new
    include Contextualizer.init_for(@__setter)
  end

  @__setter.add_attrs(*attrs, **opt_attrs)
  attr_reader *attrs, *opt_attrs.keys
end