Sha256: 85d2633c92db7947e8366c252357e66a6437f3e0d44fabaed59079390dca9cf0

Contents?: true

Size: 786 Bytes

Versions: 1

Compression:

Stored size: 786 Bytes

Contents

module NxtSchema
  module Node
    class AnyOf < Node::Base
      def valid?
        valid_application.present?
      end

      def call
        child_applications.map(&:call)

        if valid?
          self.output = valid_application.output
        else
          child_applications.each do |application|
            merge_errors(application)
          end
        end

        self
      end

      private

      delegate :[], to: :child_applications

      def valid_application
        child_applications.find(&:valid?)
      end

      def child_applications
        @child_applications ||= nodes.map { |node| node.build_application(input: input, context: context, parent: self) }
      end

      def nodes
        @nodes ||= node.sub_nodes.values
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
nxt_schema-1.0.1 lib/nxt_schema/node/any_of.rb