Sha256: ada63a7c8c0752d5c04457f392f269b820371b77913a95d382640746b82bb929
Contents?: true
Size: 1.2 KB
Versions: 1
Compression:
Stored size: 1.2 KB
Contents
# encoding: utf-8 module Policy module Base # The base class for composite policies # # @api private class Node include Policy::Base # @!scope class # @!method new(*policies) # Creates the node (composite policy) from its parts # # @param [<Policy::Base>, Array<Policy::Base>] policies # # @return [Policy::Base::Node] def initialize(*policies) @policies = policies end # @!attribute [r] policies # The parts of the composite policy # # @return [Array<Policy::Base>] attr_reader :policies # @abstract # Validates a composed policy and picks errors from its parts # # @return [false] def valid? errors.clear yield # returns true if a composition valid policies.each(&method(:pick_errors_from)) false end private def any_valid? policies.detect(&:valid?) end def any_invalid? policies.detect(&:invalid?) end def pick_errors_from(item) item.errors.full_messages.each { |text| errors.add :base, text } end end # class Node end # module Base end # module Policy
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
policy-2.0.0 | lib/policy/base/node.rb |