module Formulario class Field class Boolean < Field def self.for(raw_value) if raw_value.is_a?(Field) raw_value else build(raw_value) end end private def self.build(raw_value) case get_value(raw_value) when true, 'true', 't', '1' new true when false, 'false', 'f', '0', '' new false else ExceptionalValue.new(raw_value, reasons: ['needs to be boolean']) end end def self.get_value(raw_value) raw_value.to_s.downcase end end end end