Sha256: be9326e549ee3c0cfe063ca2e8cc3dc1a162c722a3c607c6c1c33ab133ec3982
Contents?: true
Size: 797 Bytes
Versions: 2
Compression:
Stored size: 797 Bytes
Contents
class Some include Option attr_reader :value def initialize(value) @value = value end def each &block value.is_a?(Array) ? value.each(&block) : block.call(value) end def none?(&block) block.nil? ? false : super end def value_or(default=nil) value end def some?(type=value.class) value.class == type end def & other other.and_option(self) end def == other other.is_a?(Some) && value == other.value end def | other self end def merge(other, &block) other.match do |m| m.some { |v| block.nil? ? Some[*value, v] : Some[block.call(value, v)] } m.none { self } end end def to_s "Some[#{value.inspect}]" end def self.[](*values) new(values.size == 1 ? values.first : values) end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
optional-0.0.5 | lib/optional/some.rb |
optional-0.0.4 | lib/optional/some.rb |