This gem provides a Maybe type. The Maybe type either contains a value
(represented as Just) or it is empty (represented as Nothing).
Install the ksr-maybe gem, or add it to your Gemfile with bundler:
# In your Gemfilegem'ksr-maybe'Maybe is useful for handling potentially null values:
User=Struct.new(:email,:name)users=[User.new("jane@doe.com","Jane Doe"),User.new("john@doe.com","John Doe")]# When value is not nulluser=users.find{ |user| user.email == "jane@doe.com"}Maybe.from_nullable(user).map{ |user| user.name}.get_or_else{"User not found"}#=> "Jane Doe"# When value is nulluser=users.find{ |user| user.email == "not@present.com"}Maybe.from_nullable(user).map{ |user| user.name}.get_or_else{"User not found"}#=> "User not found"This gem utilizes the 'contracts.ruby' gem, which adds dynamic type-checking to the 'ruby-maybe' codebase. By default, the 'contracts.ruby' gem will raise an error during runtime upon a type mismatch. To override this error throwing behavior, see this 'contracts.ruby' documentation.