Ir al contenido

Capa de renderizado render.ts

La envoltura del renderizado de plantillas Handlebars.

La plantilla solo se responsabiliza del esqueleto del archivo (comentario de cabecera, imports, apertura y cierre de los espacios de nombres). El formateo literal, token a token, se completa íntegramente en el TS del target, que alimenta la plantilla con la cadena body ya ensamblada.

target.ts: formateo token a token → se ensambla la cadena body
▼
render.ts: render('android/LhTokens.kt.hbs', { package, imports, body })
▼
plantilla: comentario de cabecera + declaración package + imports + {{{body}}}

La ventaja: la plantilla no contiene lógica handlebars compleja; cambiar el formateo de los literales solo afecta al TS del target, y cambiar el esqueleto del archivo solo afecta a la plantilla, sin interferencias entre ambas.

loadTemplate(name: string): HandlebarsTemplateDelegate

Sección titulada «loadTemplate(name: string): HandlebarsTemplateDelegate»

Función interna. Lee codegen/templates/<name> según el nombre de la plantilla:

const compiled = Handlebars.compile(source, { noEscape: true })
cache.set(name, compiled) // se cachea el resultado de la compilación, para evitar compilar de nuevo

El directorio de las plantillas lo indica la constante TEMPLATES_DIR (codegen/templates).

render<T>(templateName: string, data: T): string

Sección titulada «render<T>(templateName: string, data: T): string»

La única interfaz hacia el exterior:

return loadTemplate(templateName)(data)

Cada target solo necesita esta línea de código.

Las plantillas no registran ningún helper de handlebars; solo se apoyan en las capacidades integradas:

Sintaxis Uso
{{{ }}} Llaves triples + noEscape, para insertar el body preformateado
{{#each}} Recorrer arrays como la lista de imports
Plantilla Artefacto
android/LhTokens.kt.hbs LhTokens.kt y LhDarkTokens.kt (claro y oscuro comparten)
ios/LhTokens.swift.hbs LhTokens.swift y LhDarkTokens.swift
ios/LhShadow.swift.hbs LhShadow.swift (plantilla estática, sin ranura para body)
harmony/LhTokens.ets.hbs LhTokens.ets y LhDarkTokens.ets
harmony/LhShadow.ets.hbs LhShadow.ets (plantilla estática)
c/lh_tokens.h.hbs lh_tokens.h
c/lh_dark_tokens.h.hbs lh_dark_tokens.h

Para más detalles, véase la Lista de plantillas.

Copyright © 2024-2026 FengMo WenXue