Class: Philiprehberger::Maybe::None

Inherits:
Object
  • Object
show all
Includes:
Enumerable, Singleton
Defined in:
lib/philiprehberger/maybe.rb

Overview

Represents an absent value

Instance Method Summary collapse

Instance Method Details

#==(other) ⇒ Boolean

Returns equality check.

Returns:

  • (Boolean)

    equality check



396
397
398
# File 'lib/philiprehberger/maybe.rb', line 396

def ==(other)
  other.is_a?(None)
end

#[](_key) ⇒ None

Access a single key (shorthand for dig)

Parameters:

  • _key (Object)

    the key to access

Returns:



332
333
334
# File 'lib/philiprehberger/maybe.rb', line 332

def [](_key)
  self
end

#contains?(_value) ⇒ Boolean

None never contains anything

Parameters:

  • _value (Object)

    ignored

Returns:

  • (Boolean)

    false



384
385
386
# File 'lib/philiprehberger/maybe.rb', line 384

def contains?(_value)
  false
end

#deconstruct_keys(_keys) ⇒ Hash

Pattern matching support

Parameters:

  • keys (Array<Symbol>, nil)

    the keys to deconstruct

Returns:

  • (Hash)

    the deconstructed hash



340
341
342
# File 'lib/philiprehberger/maybe.rb', line 340

def deconstruct_keys(_keys)
  { value: nil, some: false, none: true }
end

#digNone

Dig always returns None

Returns:



324
325
326
# File 'lib/philiprehberger/maybe.rb', line 324

def dig(*)
  self
end

#each(&block) ⇒ Enumerator, self

Yield nothing for Enumerable support

Returns:

  • (Enumerator, self)


260
261
262
263
264
# File 'lib/philiprehberger/maybe.rb', line 260

def each(&block)
  return to_enum(:each) unless block

  self
end

#filterNone

No-op filter

Returns:



298
299
300
# File 'lib/philiprehberger/maybe.rb', line 298

def filter
  self
end

#flat_mapNone

No-op transformation

Returns:



291
292
293
# File 'lib/philiprehberger/maybe.rb', line 291

def flat_map
  self
end

#flattenNone

Flatten a None — returns self

Returns:



376
377
378
# File 'lib/philiprehberger/maybe.rb', line 376

def flatten
  self
end

#inspectString Also known as: to_s

Returns string representation.

Returns:

  • (String)

    string representation



401
402
403
# File 'lib/philiprehberger/maybe.rb', line 401

def inspect
  'None'
end

#mapNone

No-op transformation

Returns:



284
285
286
# File 'lib/philiprehberger/maybe.rb', line 284

def map
  self
end

#none?Boolean

Returns true.

Returns:

  • (Boolean)

    true



277
278
279
# File 'lib/philiprehberger/maybe.rb', line 277

def none?
  true
end

#or_else(default = nil) { ... } ⇒ Some, None

Return the default value

Parameters:

  • default (Object) (defaults to: nil)

    the default value

Yields:

  • optional block providing default

Returns:

  • (Some, None)

    the default wrapped in Maybe



307
308
309
310
# File 'lib/philiprehberger/maybe.rb', line 307

def or_else(default = nil, &block)
  value = block ? block.call : default
  Maybe.wrap(value)
end

#or_raise(error_class = Error, message = 'value is absent') ⇒ Object

Raise an error since value is absent

Parameters:

  • error_class (Class) (defaults to: Error)

    the error class to raise

  • message (String) (defaults to: 'value is absent')

    the error message

Raises:

  • (Error)

    always raises



317
318
319
# File 'lib/philiprehberger/maybe.rb', line 317

def or_raise(error_class = Error, message = 'value is absent')
  raise error_class, message
end

#present?Boolean

Alias for #some? — matches Rails-style naming

Returns:

  • (Boolean)

    false



391
392
393
# File 'lib/philiprehberger/maybe.rb', line 391

def present?
  false
end

#recover { ... } ⇒ Some, None

Convert None to Some via a block

Yields:

  • the block providing a recovery value

Returns:



348
349
350
# File 'lib/philiprehberger/maybe.rb', line 348

def recover(&block)
  Maybe.wrap(block.call)
end

#rejectNone

No-op reject, returns self

Returns:



369
370
371
# File 'lib/philiprehberger/maybe.rb', line 369

def reject
  self
end

#some?Boolean

Returns false.

Returns:

  • (Boolean)

    false



272
273
274
# File 'lib/philiprehberger/maybe.rb', line 272

def some?
  false
end

#tapNone

No-op tap, returns self

Returns:



362
363
364
# File 'lib/philiprehberger/maybe.rb', line 362

def tap
  self
end

#valuenil

Returns always nil.

Returns:

  • (nil)

    always nil



267
268
269
# File 'lib/philiprehberger/maybe.rb', line 267

def value
  nil
end

#zipNone

Combine with other Maybes — always returns None

Returns:



355
356
357
# File 'lib/philiprehberger/maybe.rb', line 355

def zip(*)
  self
end