Sha256: 640b42fa0f556ba6782308e96b20f8a45bdaad3e1552e2c4bd95b0edd857e1ac
Contents?: true
Size: 1.19 KB
Versions: 1
Compression:
Stored size: 1.19 KB
Contents
module Flows class Contract # Makes a contract from provided object's case equality check. # # @example String contract # string_check = Flows::Contract::CaseEq.new(String) # # string_check.check(111) # # => Flows::Result::Err.new('must match `String`') # # string_check === 'sdfdsfsd' # # => true # # @example Integer contract with custom error message # int_check = Flows::Contract::CaseEq.new(Integer, 'must be an integer') # # int_check.check('111') # # => Flows::Result::Err.new('must be an integer') # # string_check === 'sdfdsfsd' # # => true class CaseEq < Contract # @param object [#===] object with case equality # @param error_message [String] you may override default error message def initialize(object, error_message = nil) @object = object @error_message = error_message end # @see Contract#check! def check!(other) unless @object === other value_error = @error_message || "must match `#{@object.inspect}`" raise Error.new(other, value_error) end true end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
flows-0.4.0 | lib/flows/contract/case_eq.rb |