Sha256: 85a9525f2d008220a2bacd3a2f9fb3917948b76ec618dc82d66fef20de20e1d2

Contents?: true

Size: 611 Bytes

Versions: 1

Compression:

Stored size: 611 Bytes

Contents

class Maybe
  def self.wrap(object)
    if object
      Some.new(object)
    else
      None.new
    end
  end

  def respond_to?(method_name, include_private = false)
    super || @object.respond_to?(method_name, include_private)
  end

  def method_missing(method_name, *arguments, &block)
    value = nil
    if @object.respond_to?(method_name)
      value = @object.send(method_name, *arguments, &block)
    end

    self.class.wrap(value)
  end
end

class None < Maybe
  def value
    nil
  end
end

class Some < Maybe
  def initialize(object)
    @object = object
  end

  def value
    @object
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
terminal-emojify-0.0.1 lib/terminal/emojify/maybe.rb