Class: BraDocuments::Formatter
- Inherits:
-
Object
- Object
- BraDocuments::Formatter
- Defined in:
- lib/bra_documents/formatter.rb
Constant Summary collapse
- NOT_NUMBER =
/\D/
- FORMATS =
{ cpf: { pattern: /\A(\d{3})(\d{3})(\d{3})(\d{2})\z/, mask: '%s.%s.%s-%s' }, cnpj: { pattern: /\A(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})\z/, mask: '%s.%s.%s/%s-%s' } }.freeze
Class Method Summary collapse
-
.format(number, as:) ⇒ Object
Formats a only numbers CPF or CNPJ in their own mask.
-
.raw(number) ⇒ Object
Formats removing all not number caracters from string.
Class Method Details
.format(number, as:) ⇒ Object
Formats a only numbers CPF or CNPJ in their own mask
BraDocuments::Formatter.format('86027265892', as: :cpf) # => “860.272.658-92” BraDocuments::Formatter.format('53855973879456', as: :cnpj) # => “53.855.973/8794-56”
16 17 18 19 20 21 22 23 24 25 |
# File 'lib/bra_documents/formatter.rb', line 16 def format(number, as:) raise ArgumentError, "\"#{number.inspect}\" must be a String." unless number.is_a?(String) unless known_format?(as) raise ArgumentError, "Format \"#{as}\" is not know. Known formats: #{known_formats.join(', ')}." end format_data = FORMATS[as] Kernel.format(format_data[:mask], *format_data[:pattern].match(number).captures) end |
.raw(number) ⇒ Object
Formats removing all not number caracters from string.
BraDocuments::Formatter.raw('860.272.658-9') # => “286027265892” BraDocuments::Formatter.format('53.855.973/8794-56') # => “53855973879456”
31 32 33 34 35 |
# File 'lib/bra_documents/formatter.rb', line 31 def raw(number) raise ArgumentError, "\"#{number.inspect}\" must be a String." unless number.is_a?(String) number.gsub(NOT_NUMBER, '') end |