Class: FocusNfe::Esquemas::Validador
- Inherits:
-
Object
- Object
- FocusNfe::Esquemas::Validador
- Defined in:
- lib/focus_nfe/esquemas/validador.rb
Overview
Validação client-side opt-in de um payload de emissão contra um Esquema:
confere presença dos campos obrigatórios e tipo/tamanho dos campos escalares.
Recorre em coleções: para cada item do Array valida seus subcampos contra o
sub-esquema da coleção, em profundidade arbitrária, prefixando os erros com o
caminho — a posição do item é base 1 (ex.: itens[1].descricao,
itens[1].adicoes[3].numero). A restrição de cada campo (tipo/tamanho,
decimal, data e enum) é delegada a Campo#validar_valor.
Além do esquema de topo, aceita sub-esquemas aninhados — indexados pela
chave do payload que os contém (ex.: modal_rodoviario) — para validar
objetos aninhados cujo esquema depende de dados de runtime. Os erros do
objeto aninhado vêm prefixados pela chave (ex.: modal_rodoviario.rntrc).
Instance Method Summary collapse
-
#initialize(esquema, aninhados: {}) ⇒ Validador
constructor
A new instance of Validador.
-
#validar(dados) ⇒ Array<String>
Mensagens dos campos inválidos/ausentes (vazio se válido).
- #validar!(dados) ⇒ void
Constructor Details
#initialize(esquema, aninhados: {}) ⇒ Validador
Returns a new instance of Validador.
20 21 22 23 |
# File 'lib/focus_nfe/esquemas/validador.rb', line 20 def initialize(esquema, aninhados: {}) @esquema = esquema @aninhados = aninhados end |
Instance Method Details
#validar(dados) ⇒ Array<String>
Returns mensagens dos campos inválidos/ausentes (vazio se válido).
27 28 29 30 31 |
# File 'lib/focus_nfe/esquemas/validador.rb', line 27 def validar(dados) normalizados = normalizar(dados) validar_campos(@esquema, normalizados) + validar_aninhados(normalizados) end |
#validar!(dados) ⇒ void
This method returns an undefined value.
36 37 38 39 |
# File 'lib/focus_nfe/esquemas/validador.rb', line 36 def validar!(dados) erros = validar(dados) raise ErroDeValidacao, erros unless erros.empty? end |