class Decay::Case
Public Class Methods
new(enum_class, member)
click to toggle source
# File lib/decay/case.rb, line 3 def initialize(enum_class, member) @enum_class = enum_class @member = member @whens = {} end
Public Instance Methods
else(&block)
click to toggle source
# File lib/decay/case.rb, line 19 def else(&block) @enum_class.keys.each do |key| if !@whens.key?(key) @whens[key] = block end end self end
raise_unknown_key()
click to toggle source
# File lib/decay/case.rb, line 46 def raise_unknown_key valid_keys = @enum_class.keys.map(&:inspect).map { |str| "`#{str}'" } raise Error::UnknownKey, "Attempted to search for unknown key `#{@member.value.inspect}'. " \ "Valid options are #{valid_keys.join(", ")}" end
result()
click to toggle source
# File lib/decay/case.rb, line 29 def result if @whens.keys.size != @enum_class.keys.size undefined_cases = (@whens.keys - @enum_class.keys) .map(&:inspect).map { |str| "`#{str}'" } raise Error::UndefinedCase, "Some cases aren't yet covered: #{undefined_cases.join(", ")}" end if @whens.key?(@member.key) @whens[@member.key].call(@member) else raise_unknown_key end end
when(key, &block)
click to toggle source
# File lib/decay/case.rb, line 9 def when(key, &block) if @enum_class.keys.include?(key) @whens[key] = block else raise_unknown_key end self end