Sha256: 71a2f305027fb51f1f1e4d85dcf558e9652745c35bea821564d01c443ab592d9
Contents?: true
Size: 1.21 KB
Versions: 1
Compression:
Stored size: 1.21 KB
Contents
# The result of back-end processing, which is essentially # a container for constraint violations and arbitrary context. class Brut::BackEnd::Result attr_reader :constraint_violations, :context def initialize @constraint_violations = {} @context = {} end def constraint_violation!(object:, field:, key:, context: {}) @constraint_violations[object] ||= {} @constraint_violations[object][field] ||= {} @constraint_violations[object][field][key] = context end def each_violation(&block) @constraint_violations.each do |object,fields| fields.each do |field,keys| keys.each do |key,context| block.(object,field,key,context) end end end end def []=(key_in_context,object) @context[key_in_context] = object end def [](key_in_context) @context.fetch(key_in_context) rescue KeyError => ex raise KeyError.new( "Context did not contain '#{key_in_context}' (#{key_in_context.class}). Context has these keys: #{@context.keys.join(',')}", receiver: ex.receiver, key: ex.key) end def constraint_violations? = self.constraint_violations.any? end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
brut-0.0.1 | lib/brut/back_end/result.rb |