Module: Ruby::Enum::Case

Defined in:
lib/ruby-enum/enum/case.rb

Overview

Adds a method to an enum class that allows for exhaustive matching on a value.

class Color

include Ruby::Enum
include Ruby::Enum::Case

define :RED, :red
define :GREEN, :green
define :BLUE, :blue
define :YELLOW, :yellow

end

Color.case(Color::RED, {

[Color::RED, Color::GREEN] => -> { "red or green" },
Color::BLUE => -> { "blue" },
Color::YELLOW => -> { "yellow" },

})

Reserves the :else key for a default case: Color.case(Color::RED, {

[Color::RED, Color::GREEN] => -> { "red or green" },
else: -> { "blue or yellow" },

})

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



31
32
33
# File 'lib/ruby-enum/enum/case.rb', line 31

def self.included(klass)
  klass.extend(ClassMethods)
end