UNPKG

nornj

Version:

A powerful template engine that can works with React, JSX enhancement or alternative tools.

51 lines (43 loc) 1.58 kB
import nj from '../core'; import { assign } from '../utils/tools'; import { compileStringTmpl } from '../parser/checkStringElem'; import { createTmplRule } from '../utils/createTmplRule'; import { Template } from '../interface'; export function createTaggedTmpl(opts: any = {}) { const { outputH, delimiters, fileName, isExpression, isCss } = opts; const tmplRule = delimiters ? createTmplRule(delimiters) : nj.tmplRule; return function(strs: TemplateStringsArray, ...args: any[]) { return compileStringTmpl.apply( { tmplRule, outputH, fileName, isExpression, isCss }, arguments ) as Template.RenderFunc; }; } export function createTaggedTmplH(opts: any = {}) { opts.outputH = true; return createTaggedTmpl(opts); } export const taggedTmpl = createTaggedTmpl(); export const taggedTmplH = createTaggedTmplH(); export function template(strs: TemplateStringsArray, ...args: any[]) { return (nj.outputH ? taggedTmplH : taggedTmpl).apply(null, arguments)(); } const _taggedExpressionH = createTaggedTmplH({ isExpression: true }); export function expression(strs: TemplateStringsArray, ...args: any[]) { return _taggedExpressionH.apply(null, arguments)(); } const _taggedCssH = createTaggedTmplH({ isCss: true }); export function css(strs: TemplateStringsArray, ...args: any[]) { return _taggedCssH.apply(null, arguments)(); } assign(nj, { createTaggedTmpl, createTaggedTmplH, taggedTmpl, htmlString: taggedTmpl, taggedTmplH, html: taggedTmplH, template, expression, css });