class BuilderBuilder
Attributes
map[RW]
rules[RW]
target_class[RW]
Public Class Methods
new(target_class, rules = [])
click to toggle source
# File lib/Builder/builder_builder.rb, line 7 def initialize(target_class, rules = []) @target_class = target_class @rules = rules @map = RuleMap.new end
Public Instance Methods
add_rule(&block)
click to toggle source
# File lib/Builder/builder_builder.rb, line 42 def add_rule(&block) rules.append(Rule.new(map, &block)) end
build(validate = true, skip_contingency = false)
click to toggle source
# File lib/Builder/builder_builder.rb, line 13 def build(validate = true, skip_contingency = false) builder = Builder.new(target_class, rules) target_class.attributes.each do |attribute| builder.class.attr_accessor attribute end begin validate_contradictions if validate rescue Contingency => c raise c unless skip_contingency end builder end
validate_contradictions()
click to toggle source
# File lib/Builder/builder_builder.rb, line 28 def validate_contradictions rules.each do |rule| other_rules = rules.reject do |other_rule| other_rule.equal?(rule) end next unless other_rules.any? do |other_rule| rule.contradictory?(other_rule) end raise ContradictionError end end