module Conglomerate::BuilderSerializer
Attributes
object[RW]
Public Class Methods
new(objects, options = {})
click to toggle source
# File lib/conglomerate/builder_serializer.rb, line 7 def initialize(objects, options = {}) self.objects = [*objects].compact self.context = options.fetch(:context, nil) self._builder_name = options.fetch(:name, nil).to_s end
Public Instance Methods
build(attrs = {})
click to toggle source
# File lib/conglomerate/builder_serializer.rb, line 13 def build(attrs = {}) internal_build(attrs) end
serialize()
click to toggle source
# File lib/conglomerate/builder_serializer.rb, line 17 def serialize Conglomerate.serialize(build) end
Private Instance Methods
builder_builders()
click to toggle source
# File lib/conglomerate/builder_serializer.rb, line 61 def builder_builders self.class.instance_variable_get("@_builder_builders") end
builder_calls()
click to toggle source
# File lib/conglomerate/builder_serializer.rb, line 57 def builder_calls self.class.instance_variable_get("@_builder_calls") end
builder_type()
click to toggle source
# File lib/conglomerate/builder_serializer.rb, line 49 def builder_type self.class.instance_variable_get("@_builder_type") end
builder_values()
click to toggle source
# File lib/conglomerate/builder_serializer.rb, line 53 def builder_values self.class.instance_variable_get("@_builder_values") end
context()
click to toggle source
# File lib/conglomerate/builder_serializer.rb, line 74 def context instance_variable_get("@context") end
get_class_value(name)
click to toggle source
# File lib/conglomerate/builder_serializer.rb, line 65 def get_class_value(name) self.class.instance_variable_get("@#{name}") end
internal_build(attrs = {})
click to toggle source
# File lib/conglomerate/builder_serializer.rb, line 25 def internal_build(attrs = {}) builder_values.each do |name| value = get_class_value(name) value = value_from_proc(value) attrs[name.to_sym] = value if attrs[name.to_sym] == nil end builder_builders.each do |b| run_builder_calls(b, attrs) end self.object = builder_type.new(attrs) object end
run_builder_calls(b, attrs)
click to toggle source
# File lib/conglomerate/builder_serializer.rb, line 41 def run_builder_calls(b, attrs) calls = builder_calls[b[:command]] || [] calls.each do |call| call.run(context, objects, attrs, b[:name]) end end
value_from_proc(value)
click to toggle source
# File lib/conglomerate/builder_serializer.rb, line 69 def value_from_proc(value) value = context.instance_eval(&value) if value.respond_to?(:call) value end