|
32 | 32 | */ |
33 | 33 |
|
34 | 34 | (function() { |
35 | | - var _VERSION = '2.89.1'; |
| 35 | + var _VERSION = '2.90.0'; |
36 | 36 |
|
37 | 37 | /* Establish the win object, 'window' in the browser */ |
38 | 38 | var win = window||globalThis, _doc = document, isSPAReady, docBody = _doc.body; |
|
2840 | 2840 | } |
2841 | 2841 |
|
2842 | 2842 | var _baseProps = [ |
2843 | | - 'target', 'template', 'templateCache', 'templateScript', 'templateEngine', 'sanitizeApiXss' |
| 2843 | + 'target', 'template', 'templateCache', 'templateScript', 'templateType', 'templateEngine', 'pugFilters', 'sanitizeApiXss' |
2844 | 2844 | , 'templateUrl', 'templateUrlMethod', 'templateUrlParams', 'templateUrlPayload', 'templateUrlHeaders', 'onTemplateUrlError' |
2845 | 2845 | , 'style', 'styleCache', 'styles', 'stylesCache' |
2846 | 2846 | , 'scripts', 'scriptsCache', 'require', 'dataPreRequest', 'data', 'skipDataBind', 'skipDefaultBind', 'skipKoBind', 'useSpaBind', 'useDataBindRefresh' |
|
3902 | 3902 | compileTemplate = Tee.compile.bind(Tee); |
3903 | 3903 | } else if ((typeof nxT != 'undefined') && nxT) { |
3904 | 3904 | compileTemplate = nxT.compile.bind(nxT); |
| 3905 | + } else if ((typeof pug != 'undefined') && pug) { |
| 3906 | + compileTemplate = pug.compile.bind(pug); |
3905 | 3907 | } |
3906 | 3908 | } |
3907 | 3909 |
|
|
5047 | 5049 | alias: '', |
5048 | 5050 | components: { |
5049 | 5051 | templateEngine: 'handlebars' |
| 5052 | + , templateType: 'handlebars' |
5050 | 5053 | , rootPath: 'app/components/' |
5051 | 5054 | , inFolder: true |
5052 | 5055 | , templateExt: '.html' |
|
5319 | 5322 |
|
5320 | 5323 | options = _adjustComponentOptions(componentName, options); |
5321 | 5324 |
|
5322 | | - var baseProps = [ 'target','template','templateCache','templateScript', 'templateEngine', 'sanitizeApiXss', |
| 5325 | + var baseProps = [ 'target','template','templateCache','templateScript', 'templateType', 'templateEngine', 'pugFilters', 'sanitizeApiXss', |
5323 | 5326 | 'templateUrl', 'templateUrlMethod', 'templateUrlParams', 'templateUrlPayload', 'templateUrlHeaders', 'onTemplateUrlError', |
5324 | 5327 | 'style','styleCache','styles','stylesCache', |
5325 | 5328 | 'scripts','scriptsCache','require','dataPreRequest','data','skipDataBind', 'skipDefaultBind', 'skipKoBind', 'useSpaBind', 'useDataBindRefresh', |
|
6841 | 6844 | , dataTemplate: '' |
6842 | 6845 | , dataTemplatesCache: true |
6843 | 6846 | , templateScript: false |
| 6847 | + , templateType: '' |
6844 | 6848 | , templateEngine: '' |
6845 | 6849 | , sanitizeApiXss: false |
6846 | 6850 |
|
|
7720 | 7724 | _log.groupEnd('Template Source ...'); |
7721 | 7725 | _log.log("DATA for Template:", spaViewModel); |
7722 | 7726 |
|
7723 | | - var isSpaTemplate = /<!--\s*#+spa-template/gi.test(templateContentToBindAndRender)? 'spa' : ''; |
7724 | | - var isDotTemplate = /<!--\s*#+dot-template/gi.test(templateContentToBindAndRender)? 'dot' : ''; |
| 7727 | + var isSpaTemplate = /<!--\s*#+(spa-template|spaTemplate|spa|nxt-template|nxtTemplate|nxt)/gi.test(templateContentToBindAndRender)? 'spa' : ''; |
| 7728 | + var isDotTemplate = /<!--\s*#+(dot-template|dotTemplate|dot)/gi.test(templateContentToBindAndRender)? 'dot' : ''; |
| 7729 | + var isPugTemplate = /<!--\s*#+(pug-template|pugTemplate|pug)/gi.test(templateContentToBindAndRender)? 'pug' : ''; |
7725 | 7730 |
|
7726 | | - var $templateEngine = (spaRVOptions.templateEngine || isDotTemplate || isSpaTemplate || xsr.defaults.components.templateEngine); |
| 7731 | + var $templateEngine = (spaRVOptions.templateType || spaRVOptions.templateEngine || isDotTemplate || isSpaTemplate || isPugTemplate || xsr.defaults.components.templateType || xsr.defaults.components.templateEngine); |
7727 | 7732 | var spaTemplateEngine = ($templateEngine || 'handlebars').toLowerCase(); |
7728 | 7733 | var $compileTemplate = compileTemplate; |
| 7734 | + var isPug = false; |
7729 | 7735 | // console.log('defaultTemplateCompiler:', compileTemplate); |
7730 | 7736 | try { |
7731 | 7737 | switch(spaTemplateEngine) { |
|
7735 | 7741 | case 'dot': |
7736 | 7742 | $compileTemplate = win.doT.compile.bind(win.doT); |
7737 | 7743 | break; |
| 7744 | + case 'pug': |
| 7745 | + $compileTemplate = win.pug.compile.bind(win.pug); isPug = true; |
| 7746 | + break; |
7738 | 7747 | case 'spa': |
7739 | 7748 | case 'tee': |
7740 | 7749 | case 'nxT': |
|
7778 | 7787 | compiledTemplate = templateContentToBindAndRender; |
7779 | 7788 |
|
7780 | 7789 | // if (spaTemplateEngine.indexOf('handlebar')>=0 || spaTemplateEngine.indexOf('dot')>=0 || templateContentToBindAndRender.indexOf('{')>=0) { |
7781 | | - if (templateContentToBindAndRender.indexOf('{{')>=0) { |
| 7790 | + if (templateContentToBindAndRender.indexOf('{{')>=0 || isPug) { |
7782 | 7791 | _log.info('Found external template string {{...}} in $'+rCompName); |
7783 | 7792 | if ($compileTemplate) { |
7784 | 7793 | _log.groupCollapsed("Data bind using "+$templateEngine+" on Template ..."); |
7785 | 7794 | _log.log(templateContentToBindAndRender); |
7786 | 7795 | _log.groupEnd("Data bind using "+$templateEngine+" on Template ..."); |
7787 | 7796 | try{ |
7788 | 7797 | if (!xsr.compiledTemplates[rCompName]) { _log.info('Compiling $'+rCompName); } |
7789 | | - var preCompiledTemplate = xsr.compiledTemplates[rCompName] || ($compileTemplate(templateContentToBindAndRender)); |
| 7798 | + var preCompiledTemplate = xsr.compiledTemplates[rCompName]; |
| 7799 | + if (!preCompiledTemplate) { |
| 7800 | + if (isPug) { |
| 7801 | + var pugOptions = { self: templateContentToBindAndRender.indexOf('self.')>0, filters: spaRVOptions.pugFilters||undefined }; |
| 7802 | + _log.log("Compiling spa$"+rCompName+"'s pug template using pugOptions", pugOptions); |
| 7803 | + preCompiledTemplate = $compileTemplate(templateContentToBindAndRender, pugOptions); |
| 7804 | + } else { |
| 7805 | + _log.log("Compiling spa$"+rCompName+"'s template..."); |
| 7806 | + preCompiledTemplate = $compileTemplate(templateContentToBindAndRender); |
| 7807 | + } |
| 7808 | + } |
7790 | 7809 | var data4Template = _isObj(spaViewModel)? _mergeDeep({}, retValue, spaRVOptions.dataDefaults, spaRVOptions.data_, spaRVOptions.dataExtra, spaRVOptions.dataXtra, spaRVOptions.dataParams, spaViewModel) : spaViewModel; |
7791 | 7810 | spaBindData = data4Template; |
7792 | 7811 | if (!xsr.compiledTemplates.hasOwnProperty(rCompName)) xsr.compiledTemplates[rCompName] = preCompiledTemplate; |
|
0 commit comments