diff --git a/deno_dist/file-handlers.ts b/deno_dist/file-handlers.ts index de96c2ca..868c6fc0 100644 --- a/deno_dist/file-handlers.ts +++ b/deno_dist/file-handlers.ts @@ -241,6 +241,33 @@ function renderFile( return tryHandleCache(data, renderConfig, callback) } +/** + * Render a template from a filepath asynchronously. + * + * @param filepath Path to template file. If relative, specify `views` on the config object + * + * This can take two different function signatures: + * + * - `renderFile(filename, dataAndConfig, [cb])` + * - Eta will merge `dataAndConfig` into `eta.config` + * - `renderFile(filename, data, [config], [cb])` + * + * Note that renderFile does not immediately return the rendered result. If you pass in a callback function, it will be called with `(err, res)`. Otherwise, `renderFile` will return a `Promise` that resolves to the render result. + * + * **Examples** + * + * ```js + * eta.renderFile("./template.eta", data, {cache: true}, function (err, rendered) { + * if (err) console.log(err) + * console.log(rendered) + * }) + * + * let rendered = await eta.renderFile("./template.eta", data, {cache: true}) + * + * let rendered = await eta.renderFile("./template", {...data, cache: true}) + * ``` + */ + function renderFileAsync( filename: string, data: DataObj, diff --git a/deno_dist/render.ts b/deno_dist/render.ts index d22b6d38..cf78442b 100644 --- a/deno_dist/render.ts +++ b/deno_dist/render.ts @@ -36,7 +36,7 @@ function handleCache(template: string | TemplateFunction, options: EtaConfig): T * If `config.async` is `false`, Eta will return the rendered template. * * If `config.async` is `true` and there's a callback function, Eta will call the callback with `(err, renderedTemplate)`. - * If `config.async` is `true` and there's not a callback function, Eta will return a Promise that resolves to the rendered template + * If `config.async` is `true` and there's not a callback function, Eta will return a Promise that resolves to the rendered template. * * If `config.cache` is `true` and `config` has a `name` or `filename` property, Eta will cache the template on the first render and use the cached template for all subsequent renders. * @@ -84,6 +84,21 @@ export default function render( } } +/** + * Render a template asynchronously + * + * If `template` is a string, Eta will compile it to a function and call it with the provided data. + * If `template` is a function, Eta will call it with the provided data. + * + * If there is a callback function, Eta will call it with `(err, renderedTemplate)`. + * If there is not a callback function, Eta will return a Promise that resolves to the rendered template + * + * @param template Template string or template function + * @param data Data to render the template with + * @param config Optional config options + * @param cb Callback function + */ + export function renderAsync( template: string | TemplateFunction, data: object,