Class: BraDocuments::Matcher
- Inherits:
-
Object
- Object
- BraDocuments::Matcher
- Defined in:
- lib/bra_documents/matcher.rb
Constant Summary collapse
- FORMATS =
{ cpf: { formatted: /\A(\d{3}\.){2}\d{3}-\d{2}\z/, raw: /\A\d{11}\z/ }, cnpj: { formatted: /\A\d{2}.\d{3}\.\d{3}\/\d{4}-\d{2}\z/, raw: /\A\d{14}\z/ } }.freeze
Class Method Summary collapse
-
.match?(number, kind:, mode:) ⇒ Boolean
Macthes with Brazilian CPF and CNPJ documents.
Class Method Details
.match?(number, kind:, mode:) ⇒ Boolean
Macthes with Brazilian CPF and CNPJ documents.
BraDocuments::Matcher.match?('11111111111', kind: :cpf, mode: :raw)
# => true
BraDocuments::Matcher.match?('11111111111', kind: :cpf, mode: :formatted)
# => false
BraDocuments::Matcher.match?('11111111111', kind: :cnpj, mode: :raw)
# => false
BraDocuments::Matcher.match?('90.978.812/0001-07', kind: :cnpj, mode: :formatted)
# => true
24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/bra_documents/matcher.rb', line 24 def match?(number, kind:, mode:) raise ArgumentError, "\"#{number.inspect}\" must be a String." unless number.is_a?(String) unless known_format?(kind) raise ArgumentError, "Unknown document kind \"#{kind.inspect}\". Known documents: #{known_formats.join(', ')}." end unless known_mode?(mode) raise ArgumentError, "Unknown document format mode \"#{mode.inspect}\". Known modes: #{known_modes.join(', ')}." end formats_to_match(kind, mode).any? { |format| format.match?(number) } end |