Sha256: 2afb2d30ed90e68cf4046dc4208b5ca4e920604821917bcf199575d7a26d79bb

Contents?: true

Size: 643 Bytes

Versions: 3

Compression:

Stored size: 643 Bytes

Contents

# frozen_string_literal: true

require 'kind/dig'

module Kind
  module Maybe
    extend self

    require 'kind/maybe/result'
    require 'kind/maybe/none'
    require 'kind/maybe/some'
    require 'kind/maybe/wrappable'
    require 'kind/maybe/typed'

    def new(value)
      (KIND.null?(value) ? None : Some)
        .new(value)
    end

    alias_method :[], :new

    extend Wrappable
  end

  Optional = Maybe

  None = Maybe.none

  def self.None
    None
  end

  def self.Some(value)
    Maybe.some(value)
  end

  def self.Maybe(kind)
    Maybe::Typed.new(kind)
  end

  def self.Optional(kind)
    Maybe::Typed.new(kind)
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
kind-5.0.0 lib/kind/maybe.rb
kind-4.1.0 lib/kind/maybe.rb
kind-4.0.0 lib/kind/maybe.rb