Sha256: ce61cf725e793ec13cb11da5d17a68299e2d10a8c50f0f30c813fa061d9f6cc3

Contents?: true

Size: 1005 Bytes

Versions: 1

Compression:

Stored size: 1005 Bytes

Contents

module Fear
  # @api private
  class NoneClass
    include Option
    include Dry::Equalizer()
    include RightBiased::Left
    include NonePatternMatch.mixin

    # @raise [NoSuchElementError]
    def get
      raise NoSuchElementError
    end

    # @return [nil]
    def or_nil
      nil
    end

    # @return [true]
    def empty?
      true
    end

    # @return [None]
    def select(*)
      self
    end

    # @return [None]
    def reject(*)
      self
    end

    AS_STRING = 'Fear::None'.freeze

    # @return [String]
    def to_s
      AS_STRING
    end

    # @return [String]
    def inspect
      AS_STRING
    end

    # @param other
    # @return [Boolean]
    def ===(other)
      self == other
    end
  end

  private_constant(:NoneClass)

  # The only instance of NoneClass
  None = NoneClass.new.freeze

  class << NoneClass
    def new
      None
    end

    def inherited
      raise 'you are not allowed to inherit from NoneClass, use Fear::None instead'
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fear-0.11.0 lib/fear/none.rb