class Coupdoeil::Hovercard::Option
def inherited(subclass)
def inherited(subclass) super subclass.class_eval do @key = name.demodulize.underscore.to_sym end end
def initialize(value)
def initialize(value) value = value.to_s if value.is_a? Symbol @value = value end
def into_bits(value) = parse(value)
def into_bits(value) = parse(value)
def raise_invalid_option(message)
def raise_invalid_option(message) raise InvalidOptionError, "Invalid value '#{value}' (#{value.class.name}) for #{self.class.key} option. #{message}" end
def validate! = raise(NotImplementedError)
def validate! = raise(NotImplementedError)
def validate_inclusion!
def validate_inclusion! values = self.class.const_get("VALUES") return if value.in?(values) values_sentence = values.to_sentence(two_words_connector: " or ", last_word_connector: " or ") raise_invalid_option "Value must be one of: #{values_sentence}" end