module Conglomerate::ParticleBuilder::ClassMethods
Public Class Methods
extended(klass)
click to toggle source
# File lib/conglomerate/particle_builder.rb, line 18 def self.extended(klass) klass.instance_variable_set("@class_methods", Module.new) klass.instance_variable_set("@values", []) klass.instance_variable_set("@builders", []) end
Public Instance Methods
serializer()
click to toggle source
# File lib/conglomerate/particle_builder.rb, line 24 def serializer mod = Module.new mod.send(:include, Conglomerate::MixinIvarHelper) mod.send(:mc_ivar_accessor, :class_methods, :values, :_builder_type, :_builder_calls, :_builder_builders, :build_override_mod) mod.class_methods = class_methods mod.values = values.dup mod._builder_type = instance_variable_get("@type") mod._builder_builders = builders.dup begin mod.build_override_mod = self::BuildOverride rescue NameError end mod.define_singleton_method(:included) do |klass| klass.send(:extend, class_methods) klass.send(:include, Conglomerate::BuilderSerializer) klass.send(:include, build_override_mod) if build_override_mod klass.instance_variable_set("@_builder_values", values) klass.instance_variable_set("@_builder_type", _builder_type) klass.instance_variable_set("@_builder_calls", {}) klass.instance_variable_set("@_builder_builders", _builder_builders) end mod end
Private Instance Methods
builder(command, builder, opts={})
click to toggle source
# File lib/conglomerate/particle_builder.rb, line 68 def builder(command, builder, opts={}) name = opts[:name] || command array = opts[:array] || false iterates = opts[:iterates] || false class_methods.send(:define_method, command) do |name=nil, opts={}, &block| instance_variable_get("@_builder_calls")[command] ||= [] instance_variable_get("@_builder_calls")[command] << Conglomerate::BuilderCall.new({ :name => name, :opts => opts, :block => block, :builder => builder, :array => array, :iterates => iterates }) end builders << { :command => command, :builder => builder, :array => array, :name => name, :iterates => iterates } end
builds(type)
click to toggle source
# File lib/conglomerate/particle_builder.rb, line 56 def builds(type) instance_variable_set("@type", type) end
value(name)
click to toggle source
# File lib/conglomerate/particle_builder.rb, line 60 def value(name) class_methods.send(:define_method, name) do |&block| instance_variable_set("@#{name}", block) end values << name end