Sha256: fb44145afea262e91efd11d47e77503258fb338d6e8714abc47fc071a141cc93

Contents?: true

Size: 573 Bytes

Versions: 1

Compression:

Stored size: 573 Bytes

Contents

# frozen_string_literal: true

class Solid::Result
  class Contract::ForTypes
    include Contract::Interface

    attr_reader :allowed_types

    def initialize(types)
      @allowed_types = Array(types).map(&:to_sym).to_set.freeze
    end

    def type?(type)
      IgnoredTypes.include?(type) || allowed_types.member?(type)
    end

    def type!(type)
      return type if type?(type)

      raise Contract::Error::UnexpectedType.build(type: type, allowed_types: allowed_types)
    end

    def type_and_value!(data)
      type!(data.type)

      nil
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
solid-result-2.0.0 lib/solid/result/contract/for_types.rb