Module: FocusNfe::Esquemas

Defined in:
lib/focus_nfe.rb,
lib/focus_nfe/esquemas/campo.rb,
lib/focus_nfe/esquemas/decimal.rb,
lib/focus_nfe/esquemas/esquema.rb,
lib/focus_nfe/esquemas/catalogo.rb,
lib/focus_nfe/esquemas/validador.rb

Overview

Introspecção pública dos esquemas empacotados: lista os documentos com schema e descreve seus campos como dado serializável, para devs e ferramentas automatizadas — sem token nem conexão.

Defined Under Namespace

Classes: Campo, Decimal, ErroDeValidacao, Esquema, Validador

Constant Summary collapse

GLOB_SCHEMAS =

Returns glob dos arquivos de schema empacotados em data/schemas/.

Returns:

  • (String)

    glob dos arquivos de schema empacotados em data/schemas/

"schema_*.json"

Class Method Summary collapse

Class Method Details

.descrever(nome) ⇒ Array<Hash>?

Descrição estruturada dos campos de um documento, para devs e ferramentas automatizadas conhecerem nomes, tipos e obrigatoriedade sem token nem conexão. Coleções aninham seus subcampos (ver FocusNfe::Esquemas::Campo#to_h).

Parameters:

  • nome (String)

    nome do documento (ver disponiveis)

Returns:

  • (Array<Hash>, nil)

    descrição de cada campo, ou nil se não houver schema



29
30
31
# File 'lib/focus_nfe/esquemas/catalogo.rb', line 29

def descrever(nome)
  Esquema.carregar(nome)&.descrever
end

.disponiveisArray<String>

Nomes dos documentos com schema empacotado, ordenados. Inclui os sub-schemas auxiliares (ex.: "nfe_item", "cte_transporte_aereo"), pois também são introspectáveis via descrever.

Returns:

  • (Array<String>)

    nomes de documento aceitos por descrever



17
18
19
20
21
# File 'lib/focus_nfe/esquemas/catalogo.rb', line 17

def disponiveis
  Dir.glob(File.join(Esquema::DIRETORIO, GLOB_SCHEMAS))
     .map { |caminho| File.basename(caminho, ".json").delete_prefix("schema_") }
     .sort
end