Aller au contenu

Couche de rendu — render.ts

Encapsulation du rendu des modèles Handlebars.

Les modèles ne sont responsables que du squelette du fichier (commentaire d’en-tête, imports, ouverture / fermeture des espaces de noms). La mise en forme littérale de chaque jeton se fait entièrement dans le TS de la cible, qui nourrit le modèle avec la chaîne body déjà assemblée.

target.ts: mise en forme jeton par jeton → assemblage en une chaîne body
▼
render.ts: render('android/LhTokens.kt.hbs', { package, imports, body })
▼
modèle: commentaire d'en-tête + déclaration package + imports + {{{body}}}

L’avantage : aucune logique handlebars complexe dans les modèles ; pour modifier la mise en forme des littéraux, on ne touche qu’au TS de la cible, et pour modifier le squelette du fichier, on ne touche qu’au modèle — sans interférence.

loadTemplate(name: string): HandlebarsTemplateDelegate

Section intitulée « loadTemplate(name: string): HandlebarsTemplateDelegate »

Fonction interne. Lit codegen/templates/<name> à partir du nom du modèle :

const compiled = Handlebars.compile(source, { noEscape: true })
cache.set(name, compiled) // Le résultat compilé est mis en cache pour éviter de recompiler

Le répertoire des modèles est désigné par la constante TEMPLATES_DIR (codegen/templates).

La seule interface exposée :

return loadTemplate(templateName)(data)

Chaque cible n’a besoin que de cet unique appel.

Les modèles n’enregistrent aucun helper handlebars et n’utilisent que les capacités intégrées :

Syntaxe Usage
{{{ }}} Triple accolade + noEscape, pour insérer le body pré-formaté
{{#each}} Parcourir des tableaux comme la liste des imports
Modèle Artéfact
android/LhTokens.kt.hbs LhTokens.kt et LhDarkTokens.kt (commun au clair et au sombre)
ios/LhTokens.swift.hbs LhTokens.swift et LhDarkTokens.swift
ios/LhShadow.swift.hbs LhShadow.swift (modèle statique, sans emplacement body)
harmony/LhTokens.ets.hbs LhTokens.ets et LhDarkTokens.ets
harmony/LhShadow.ets.hbs LhShadow.ets (modèle statique)
c/lh_tokens.h.hbs lh_tokens.h
c/lh_dark_tokens.h.hbs lh_dark_tokens.h

Voir Liste des modèles.

Copyright © 2024-2026 FengMo WenXue