Sha256: 92ed12c1d23c23738998b3cd6db556d38625ff92c09a82060fd82741d090117e

Contents?: true

Size: 1.25 KB

Versions: 11

Compression:

Stored size: 1.25 KB

Contents

module Fear
  class Success
    include Try
    include Dry::Equalizer(:value)
    include RightBiased::Right

    attr_reader :value
    protected :value

    # @param [any]
    def initialize(value)
      @value = value
    end

    # @return [any]
    def get
      @value
    end

    # @return [Boolean]
    def success?
      true
    end

    # @return [false]
    def failure?
      false
    end

    # @return [Success]
    def or_else
      self
    end

    # @return [Try]
    def flatten
      if value.is_a?(Try)
        value.flatten
      else
        self
      end
    end

    # @yieldparam [any] value
    # @yieldreturn [Boolean]
    # @return [Try]
    def select
      if yield(value)
        self
      else
        fail NoSuchElementError, "Predicate does not hold for `#{value}`"
      end
    rescue => error
      Failure.new(error)
    end

    # @return [Success]
    def recover_with
      self
    end

    # @return [Success]
    def recover
      self
    end

    # @return [Try]
    def map
      super
    rescue => error
      Failure.new(error)
    end

    # @return [Try]
    def flat_map
      super
    rescue => error
      Failure.new(error)
    end

    # @return [Right]
    def to_either
      Right.new(value)
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
fear-0.10.0 lib/fear/success.rb
fear-0.9.0 lib/fear/success.rb
fear-0.8.0 lib/fear/success.rb
fear-0.7.0 lib/fear/success.rb
fear-0.6.0 lib/fear/success.rb
fear-0.5.0 lib/fear/success.rb
fear-0.4.2 lib/fear/success.rb
fear-0.4.1 lib/fear/success.rb
fear-0.4.0 lib/fear/success.rb
fear-0.3.0 lib/fear/success.rb
fear-0.2.0 lib/fear/success.rb