Sha256: 4f77f7fa6cf7719aa8e851a4014f3ac968397c3a8b1857bef491ed8e2277f76c

Contents?: true

Size: 856 Bytes

Versions: 1

Compression:

Stored size: 856 Bytes

Contents

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

      def call
        # TODO: We should check that this is not empty!
        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.0 lib/nxt_schema/application/any_of.rb