Cfdi.Transform.CadenaEngine (cfdi_transform v4.0.1)

Copy Markdown

Motor de generación de cadena original. Espejo de cadena-engine.ts.

Recibe el XML del CFDI y un template_registry parseado por Cfdi.Transform.XsltParser, y produce la cadena |...|...||.

Summary

Functions

Genera la cadena original a partir del contenido XML y un registro de plantillas. Devuelve {:ok, cadena} o un {:error, _}.

Colapsa whitespace (\s+) y hace trim. Equivale a normalize-space() de XSLT, que es lo que usan las plantillas Requerido y Opcional.

Equivalente a Opcional(valor): vacío si nil, sino | + normalize-space.

Procesa un nodo aplicando la plantilla correspondiente a su nombre completo (con prefijo). Devuelve iodata.

Equivalente a Requerido(valor): prefija | + normalize-space.

Resuelve un select con segmentos prefix:Element separados por /. Devuelve la lista de nodos coincidentes (paridad con resolveSelect de Node).

Functions

generate_cadena_original(xml_content, registry)

@spec generate_cadena_original(String.t(), Cfdi.Transform.Types.template_registry()) ::
  {:ok, String.t()} | {:error, term()}

Genera la cadena original a partir del contenido XML y un registro de plantillas. Devuelve {:ok, cadena} o un {:error, _}.

normalize_space(s)

@spec normalize_space(String.t() | nil) :: String.t()

Colapsa whitespace (\s+) y hace trim. Equivale a normalize-space() de XSLT, que es lo que usan las plantillas Requerido y Opcional.

opcional(value)

@spec opcional(String.t() | nil) :: String.t()

Equivalente a Opcional(valor): vacío si nil, sino | + normalize-space.

process_node(node, registry)

@spec process_node(term(), Cfdi.Transform.Types.template_registry()) :: iodata()

Procesa un nodo aplicando la plantilla correspondiente a su nombre completo (con prefijo). Devuelve iodata.

requerido(value)

@spec requerido(String.t() | nil) :: String.t()

Equivalente a Requerido(valor): prefija | + normalize-space.

resolve_select(node, select)

@spec resolve_select(term(), String.t()) :: [term()]

Resuelve un select con segmentos prefix:Element separados por /. Devuelve la lista de nodos coincidentes (paridad con resolveSelect de Node).