Sha256: a06bc9050c23fab94758b76353c8ef6d82fd0617b6099a5fe1449e6e17ffee87

Contents?: true

Size: 551 Bytes

Versions: 2

Compression:

Stored size: 551 Bytes

Contents

module RiceBubble
  class Attributes
    class Any < Base
      attr_reader :members

      def initialize(*members, &)
        super(&)
        @members = members.flatten
      end

      def valid?(value)
        !which(value).nil?
      end

      def call(value, path: '')
        super(which(value)&.call(value, path:) || value, path:)
      end

      def which(value)
        members.find { |member| member.valid?(value) }
      end

      def description
        "one of [#{members.map(&:description).join(", ")}]"
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rice_bubble-0.2.1 lib/rice_bubble/attributes/any.rb
rice_bubble-0.2.0 lib/rice_bubble/attributes/any.rb