Sha256: feffb7880ddf8f2353b0f059e516be54a4bdd7bc9987f37ac1a17fdef4c0761d
Contents?: true
Size: 963 Bytes
Versions: 3
Compression:
Stored size: 963 Bytes
Contents
# frozen_string_literal: true module ReSorcery module Maybe class Just include Fielded field :kind, :just, -> { :just } field :value, Decoder.new { true }, -> { @value } def initialize(value) @value = value end def and_then(&block) ArgCheck['block', block.call(@value), Just, Nothing] end def map(&block) Just.new(block.call(@value)) end def or_else self end def get_or_else @value end def assign(name, &block) raise Error::NonHashAssignError, @value unless @value.is_a?(Hash) ArgCheck['block', block.call(@value), Just, Nothing] .map { |k| @value.merge(name => k) } end def ==(other) other.class == Just && other.instance_eval { @value } == @value end def as_json(*) { kind: :just, value: @value, } end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
re_sorcery-0.3.0 | lib/re_sorcery/maybe/just.rb |
re_sorcery-0.2.0 | lib/re_sorcery/maybe/just.rb |
re_sorcery-0.1.0 | lib/re_sorcery/maybe/just.rb |