طبقة العرض render.ts
تغليف عرض قوالب Handlebars.
مبدأ التصميم: قوالب رفيعة
Section titled “مبدأ التصميم: قوالب رفيعة”القوالب مسؤولة عن الهيكل العام للملف فقط (تعليقات الرأس، والاستيرادات، وفتح/إغلاق مساحات الأسماء). أما تنسيق القيم الحرفية لكل رمز فيتم بالكامل في TS الخاص بالهدف، ويُغذَّى القالب بسلسلة body مُجمَّعة:
target.ts: تنسيق كل رمز ← تجميعها في سلسلة body ▼render.ts: render('android/LhTokens.kt.hbs', { package, imports, body }) ▼القالب: تعليقات الرأس + إعلان package + الاستيرادات + {{{body}}}الفائدة: لا يوجد منطق handlebars معقد داخل القوالب؛ تعديل تنسيق القيم الحرفية يكون في TS الخاص بالهدف، وتعديل الهيكل العام للملف يكون في القالب، دون أن يتدخل أحدهما في الآخر.
الدوال
Section titled “الدوال”loadTemplate(name: string): HandlebarsTemplateDelegate
Section titled “loadTemplate(name: string): HandlebarsTemplateDelegate”دالة داخلية. تقرأ القالب وفق اسمه من codegen/templates/<name>:
const compiled = Handlebars.compile(source, { noEscape: true })cache.set(name, compiled) // تخزين نتيجة التجميع، تفاديًا لإعادة التجميعيُحدَّد دليل القوالب بالثابت TEMPLATES_DIR (codegen/templates).
render<T>(templateName: string, data: T): string
Section titled “render<T>(templateName: string, data: T): string”الواجهة الوحيدة المُعلَنة:
return loadTemplate(templateName)(data)وهذا كل ما يحتاجه كل هدف لاستدعائها.
لا توجد مساعدات (helpers) مخصصة
Section titled “لا توجد مساعدات (helpers) مخصصة”لا تسجِّل القوالب أي مساعد handlebars، وتعتمد فقط على القدرات المدمجة:
| الصيغة | الاستخدام |
|---|---|
{{{ }}} |
الأقواس الثلاثية مع noEscape، لإدراج body مهيَّأ مسبقًا |
{{#each}} |
المرور على مصفوفات مثل قائمة الاستيرادات |
7 قوالب
Section titled “7 قوالب”| القالب | المنتجات |
|---|---|
android/LhTokens.kt.hbs |
LhTokens.kt و LhDarkTokens.kt (مشتركة بين الوضعين) |
ios/LhTokens.swift.hbs |
LhTokens.swift وLhDarkTokens.swift |
ios/LhShadow.swift.hbs |
LhShadow.swift (قالب ثابت، بلا فتحة body) |
harmony/LhTokens.ets.hbs |
LhTokens.ets وLhDarkTokens.ets |
harmony/LhShadow.ets.hbs |
LhShadow.ets (قالب ثابت) |
c/lh_tokens.h.hbs |
lh_tokens.h |
c/lh_dark_tokens.h.hbs |
lh_dark_tokens.h |
راجع قائمة القوالب.
Copyright © 2024-2026 FengMo WenXue