UNPKG

@fireenjin/cli

Version:

A set of tools for speeding up production of full-stack Firebase projects.

44 lines (40 loc) 1.32 kB
import * as Handlebars from "handlebars"; import getHandlebarsHelpers from "./getHandlebarsHelpers"; let currentHelpers: string[] = []; declare type CustomHelpers = { [helperName: string]: any }; /** * Render a lump of handlebars */ export default function renderHandlebars( templateStr: string, data?: any, options?: { partials?: { id: string; html?: string }[]; helpers?: CustomHelpers; } ): string { for (const partial of options?.partials || []) { Handlebars.registerPartial(partial.id, partial?.html || ""); } try { const helpers = ( Object.keys(options?.helpers || []).length ? options?.helpers : getHandlebarsHelpers() ) as CustomHelpers; for (const [helperName, helperFn] of Object.entries(helpers)) { try { if (currentHelpers.includes(helperName)) Handlebars.unregisterHelper(helperName); Handlebars.registerHelper(helperName, helperFn as any); if (!currentHelpers.includes(helperName)) currentHelpers = [...currentHelpers, helperName]; } catch (error) { console.log(`Error setting helper ${helperName}.`, error); } } } catch { console.log("Error setting helpers."); } return Handlebars.compile(templateStr)(data); }