Sha256: 088854da8bd2a58ce65d101d4bb7daf6806267540e62ab399c0ad8dbeede4a59

Contents?: true

Size: 572 Bytes

Versions: 3

Compression:

Stored size: 572 Bytes

Contents

# frozen_string_literal: true

class BCDD::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

3 entries across 3 versions & 1 rubygems

Version Path
bcdd-result-1.1.0 lib/bcdd/result/contract/for_types.rb
bcdd-result-1.0.0 lib/bcdd/result/contract/for_types.rb
bcdd-result-0.13.0 lib/bcdd/result/contract/for_types.rb