Skip to content

Commit b5b98a3

Browse files
committed
v2.90.0
+ support for pug template;
1 parent 270cb80 commit b5b98a3

File tree

6 files changed

+34
-15
lines changed

6 files changed

+34
-15
lines changed

bower.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"description": "Single Page Application (SPA) Simplified Framework/Library",
44
"main": "dist/spa-bundle.js",
55

6-
"version": "2.89.1",
6+
"version": "2.90.0",
77
"license": "MIT",
88
"homepage": "https://github.com/sucom/SPA.js",
99

dist/spa-bundle.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/spa-bundle.slim.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "spa.js",
3-
"version": "2.89.1",
3+
"version": "2.90.0",
44
"description": "Single Page Application (SPA) Simplified Framework/Library",
55
"main": "dist/spa-bundle.js",
66
"repository": {

src/spa.js

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
*/
3333

3434
(function() {
35-
var _VERSION = '2.89.1';
35+
var _VERSION = '2.90.0';
3636

3737
/* Establish the win object, 'window' in the browser */
3838
var win = window||globalThis, _doc = document, isSPAReady, docBody = _doc.body;
@@ -2840,7 +2840,7 @@
28402840
}
28412841

28422842
var _baseProps = [
2843-
'target', 'template', 'templateCache', 'templateScript', 'templateEngine', 'sanitizeApiXss'
2843+
'target', 'template', 'templateCache', 'templateScript', 'templateType', 'templateEngine', 'pugFilters', 'sanitizeApiXss'
28442844
, 'templateUrl', 'templateUrlMethod', 'templateUrlParams', 'templateUrlPayload', 'templateUrlHeaders', 'onTemplateUrlError'
28452845
, 'style', 'styleCache', 'styles', 'stylesCache'
28462846
, 'scripts', 'scriptsCache', 'require', 'dataPreRequest', 'data', 'skipDataBind', 'skipDefaultBind', 'skipKoBind', 'useSpaBind', 'useDataBindRefresh'
@@ -3902,6 +3902,8 @@
39023902
compileTemplate = Tee.compile.bind(Tee);
39033903
} else if ((typeof nxT != 'undefined') && nxT) {
39043904
compileTemplate = nxT.compile.bind(nxT);
3905+
} else if ((typeof pug != 'undefined') && pug) {
3906+
compileTemplate = pug.compile.bind(pug);
39053907
}
39063908
}
39073909

@@ -5047,6 +5049,7 @@
50475049
alias: '',
50485050
components: {
50495051
templateEngine: 'handlebars'
5052+
, templateType: 'handlebars'
50505053
, rootPath: 'app/components/'
50515054
, inFolder: true
50525055
, templateExt: '.html'
@@ -5319,7 +5322,7 @@
53195322

53205323
options = _adjustComponentOptions(componentName, options);
53215324

5322-
var baseProps = [ 'target','template','templateCache','templateScript', 'templateEngine', 'sanitizeApiXss',
5325+
var baseProps = [ 'target','template','templateCache','templateScript', 'templateType', 'templateEngine', 'pugFilters', 'sanitizeApiXss',
53235326
'templateUrl', 'templateUrlMethod', 'templateUrlParams', 'templateUrlPayload', 'templateUrlHeaders', 'onTemplateUrlError',
53245327
'style','styleCache','styles','stylesCache',
53255328
'scripts','scriptsCache','require','dataPreRequest','data','skipDataBind', 'skipDefaultBind', 'skipKoBind', 'useSpaBind', 'useDataBindRefresh',
@@ -6841,6 +6844,7 @@
68416844
, dataTemplate: ''
68426845
, dataTemplatesCache: true
68436846
, templateScript: false
6847+
, templateType: ''
68446848
, templateEngine: ''
68456849
, sanitizeApiXss: false
68466850

@@ -7720,12 +7724,14 @@
77207724
_log.groupEnd('Template Source ...');
77217725
_log.log("DATA for Template:", spaViewModel);
77227726

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' : '';
77257730

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);
77277732
var spaTemplateEngine = ($templateEngine || 'handlebars').toLowerCase();
77287733
var $compileTemplate = compileTemplate;
7734+
var isPug = false;
77297735
// console.log('defaultTemplateCompiler:', compileTemplate);
77307736
try {
77317737
switch(spaTemplateEngine) {
@@ -7735,6 +7741,9 @@
77357741
case 'dot':
77367742
$compileTemplate = win.doT.compile.bind(win.doT);
77377743
break;
7744+
case 'pug':
7745+
$compileTemplate = win.pug.compile.bind(win.pug); isPug = true;
7746+
break;
77387747
case 'spa':
77397748
case 'tee':
77407749
case 'nxT':
@@ -7778,15 +7787,25 @@
77787787
compiledTemplate = templateContentToBindAndRender;
77797788

77807789
// if (spaTemplateEngine.indexOf('handlebar')>=0 || spaTemplateEngine.indexOf('dot')>=0 || templateContentToBindAndRender.indexOf('{')>=0) {
7781-
if (templateContentToBindAndRender.indexOf('{{')>=0) {
7790+
if (templateContentToBindAndRender.indexOf('{{')>=0 || isPug) {
77827791
_log.info('Found external template string {{...}} in $'+rCompName);
77837792
if ($compileTemplate) {
77847793
_log.groupCollapsed("Data bind using "+$templateEngine+" on Template ...");
77857794
_log.log(templateContentToBindAndRender);
77867795
_log.groupEnd("Data bind using "+$templateEngine+" on Template ...");
77877796
try{
77887797
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+
}
77907809
var data4Template = _isObj(spaViewModel)? _mergeDeep({}, retValue, spaRVOptions.dataDefaults, spaRVOptions.data_, spaRVOptions.dataExtra, spaRVOptions.dataXtra, spaRVOptions.dataParams, spaViewModel) : spaViewModel;
77917810
spaBindData = data4Template;
77927811
if (!xsr.compiledTemplates.hasOwnProperty(rCompName)) xsr.compiledTemplates[rCompName] = preCompiledTemplate;

src/spa.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)