Skip to content

Commit a967869

Browse files
committed
Fixed view rendering in release mode.
1 parent a9ef065 commit a967869

3 files changed

Lines changed: 41 additions & 27 deletions

File tree

internal.js

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ var REG_5 = />\n\s{1,}</g;
4646
var REG_6 = /[\<\w\"\u0080-\u07ff\u0400-\u04FF]+\s{2,}[\w\u0080-\u07ff\u0400-\u04FF\>]+/;
4747
var REG_BLOCK_BEG = /\@\{block.*?\}/gi;
4848
var REG_BLOCK_END = /\@\{end\}/gi;
49+
var REG_SKIP_1 = /\(\'|\"/g;
50+
var REG_SKIP_2 = /\,(\s)?\w+/g;
4951

5052
var HTTPVERBS = { 'GET': true, 'POST': true, 'OPTIONS': true, 'PUT': true, 'DELETE': true, 'PATCH': true, 'upload': true, 'HEAD': true, 'TRACE': true, 'PROPFIND': true };
5153

@@ -1999,28 +2001,35 @@ function view_parse(content, minify, filename, controller) {
19992001

20002002
var can = false;
20012003

2002-
for (var a = 0, al = RENDERNOW.length; a < al; a++) {
2003-
if (tmp.startsWith(RENDERNOW[a])) {
2004-
2005-
if (tmp.indexOf('+') !== -1)
2006-
continue;
2007-
2008-
if (!a) {
2009-
var isMeta = tmp.indexOf('\'meta\'') !== -1;
2010-
var isHead = tmp.indexOf('\'head\'') !== -1;
2011-
tmp = tmp.replace(/\'(meta|head)\'\,/g, '').replace(/(\,\,|\,\)|\s{1,})/g, '');
2012-
if (isMeta || isHead) {
2013-
var tmpimp = '';
2014-
if (isMeta)
2015-
tmpimp += (isMeta ? '\'meta\'' : '');
2016-
if (isHead)
2017-
tmpimp += (tmpimp ? ',' : '') + (isHead ? '\'head\'' : '');
2018-
builder += '+self.$import(' + tmpimp + ')';
2004+
// Inline rendering is supported only in release mode
2005+
if (RELEASE) {
2006+
for (var a = 0, al = RENDERNOW.length; a < al; a++) {
2007+
if (tmp.startsWith(RENDERNOW[a])) {
2008+
2009+
if (tmp.indexOf('+') !== -1)
2010+
continue;
2011+
2012+
// skips variables 1
2013+
if (!tmp.match(REG_SKIP_1) || tmp.match(REG_SKIP_2))
2014+
continue;
2015+
2016+
if (!a) {
2017+
var isMeta = tmp.indexOf('\'meta\'') !== -1;
2018+
var isHead = tmp.indexOf('\'head\'') !== -1;
2019+
tmp = tmp.replace(/\'(meta|head)\'\,/g, '').replace(/(\,\,|\,\)|\s{1,})/g, '');
2020+
if (isMeta || isHead) {
2021+
var tmpimp = '';
2022+
if (isMeta)
2023+
tmpimp += (isMeta ? '\'meta\'' : '');
2024+
if (isHead)
2025+
tmpimp += (tmpimp ? ',' : '') + (isHead ? '\'head\'' : '');
2026+
builder += '+self.$import(' + tmpimp + ')';
2027+
}
20192028
}
2020-
}
20212029

2022-
can = true;
2023-
break;
2030+
can = true;
2031+
break;
2032+
}
20242033
}
20252034
}
20262035

@@ -2046,8 +2055,8 @@ function view_parse(content, minify, filename, controller) {
20462055
builder += '+' + escaper(text);
20472056
}
20482057

2049-
if (!framework.isDebug)
2050-
builder = builder.replace(/(\+\$EMPTY\+)/g, '+').replace(/(\$output\=\$EMPTY\+)/g, '$output=').replace(/(\$output\+\=\$EMPTY\+)/g, '$output+=').replace(/(\}\$output\+\=\$EMPTY)/g, '}').replace(/(\{\$output\+\=\$EMPTY\;)/g, '{').replace(/(\+\$EMPTY\+)/g, '+').replace(/(\>\'\+\'\<)/g, '><');
2058+
if (RELEASE)
2059+
builder = builder.replace(/(\+\$EMPTY\+)/g, '+').replace(/(\$output\=\$EMPTY\+)/g, '$output=').replace(/(\$output\+\=\$EMPTY\+)/g, '$output+=').replace(/(\}\$output\+\=\$EMPTY)/g, '}').replace(/(\{\$output\+\=\$EMPTY\;)/g, '{').replace(/(\+\$EMPTY\+)/g, '+').replace(/(\>\'\+\'\<)/g, '><').replace(/\'\+\'/g, '');
20512060

20522061
var fn = '(function(self,repository,model,session,query,body,url,global,helpers,user,config,functions,index,output,date,cookie,files,mobile){var get=query;var post=body;var theme=this.themeName;var language=this.language;var cookie=function(name){return controller.req.cookie(name);};' + (isSitemap ? 'var sitemap=function(){return self.sitemap.apply(self,arguments);};' : '') + (functions.length ? functions.join('') + ';' : '') + 'var controller=self;' + builder + ';return $output;})';
20532062
return eval(fn);
@@ -2263,11 +2272,10 @@ function view_prepare(command, dynamicCommand, functions) {
22632272
case 'routeVideo':
22642273
case 'routeStatic':
22652274
return 'self.' + command;
2266-
2267-
case 'translate':
22682275
case 'TRANSLATE':
2269-
return 'self.' + command.toLowerCase();
2270-
2276+
return command;
2277+
case 'translate':
2278+
return 'self.' + command;
22712279
case 'json':
22722280
case 'image':
22732281
case 'layout':

test/controllers/default.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -585,6 +585,9 @@ function viewViews() {
585585
assert.ok(output.contains('PLACE'), name + 'place');
586586
assert.ok(output.contains('#dynamic<b>OK</b>#'), name + 'dynamic view');
587587
assert.ok(self.repository.INLINE === 6, name + 'INLINE assign 2');
588+
// console.log(output);
589+
assert.ok(output.contains('#RELEASETRANSLATOR1=A=A#'), name + 'INLINE TRANSLATOR FOR RELEASE MODE 1');
590+
assert.ok(output.contains('#RELEASETRANSLATOR2=A=A#'), name + 'INLINE TRANSLATOR FOR RELEASE MODE 2');
588591

589592
self.repository.A = 'A';
590593

test/views/a.html

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,7 @@
7676
@{compile}
7777
COMPILE_WITHOUT
7878
@{end}
79-
@{'filename.js'}
79+
@{'filename.js'}
80+
81+
#RELEASETRANSLATOR1=@{translate('sk', model.a)}=A#
82+
#RELEASETRANSLATOR2=@{translate('A')}=A#

0 commit comments

Comments
 (0)