Parcourir la source

clean up noisy parserContext references

tags/0.5.0-vsc
thegrandpoobah il y a 16 ans
Parent
révision
9eb8aa4c84
1 fichiers modifiés avec 31 ajouts et 32 suppressions
  1. +31
    -32
      mustache.js

+ 31
- 32
mustache.js Voir le fichier

@@ -26,6 +26,7 @@ var Mustache = function() {
createParserContext: function(tokens, partials, openTag, closeTag) {
return {
tokens: tokens,
token: function() { return this.tokens[this.index]; },
index: 0,
length: tokens.length,
partials: partials,
@@ -139,17 +140,17 @@ var Mustache = function() {
stateMachine: {
text: function(parserContext, contextStack) {
switch (parserContext.tokens[parserContext.index]) {
switch (parserContext.token()) {
case parserContext.openTag:
return 'openMustache';
default:
this.send_func(parserContext.tokens[parserContext.index]);
this.send_func(parserContext.token());
return 'text';
}
},
openMustache: function(parserContext, contextStack) {
switch (parserContext.tokens[parserContext.index]) {
switch (parserContext.token()) {
case '{':
parserContext.stack.push({tagType:'unescapedVariable', subtype: 'tripleMustache'});
return 'keyName';
@@ -185,24 +186,24 @@ var Mustache = function() {
}
},
closeMustache: function(parserContext, contextStack) {
if (this.isWhitespace(parserContext.tokens[parserContext.index])) {
if (this.isWhitespace(parserContext.token())) {
return 'closeMustache';
} else if (parserContext.tokens[parserContext.index]===parserContext.closeTag) {
} else if (parserContext.token()===parserContext.closeTag) {
return this.dispatchCommand(parserContext, contextStack);
}
},
expectClosingMustache: function(parserContext, contextStack) {
if (parserContext.closeTag==='}}' &&
parserContext.tokens[parserContext.index]==='}}') {
parserContext.token()==='}}') {
return 'expectClosingParenthesis';
} else if (parserContext.tokens[parserContext.index]==='}') {
} else if (parserContext.token()==='}') {
return 'closeMustache';
} else {
throw new ParserException('Unexpected token encountered.');
}
},
expectClosingParenthesis: function(parserContext, contextStack) {
if (parserContext.tokens[parserContext.index]==='}') {
if (parserContext.token()==='}') {
return this.dispatchCommand(parserContext, contextStack);
} else {
throw new ParserException('Unexpected token encountered.');
@@ -233,59 +234,59 @@ var Mustache = function() {
}
},
simpleKeyName: function(parserContext, contextStack) {
if (this.isWhitespace(parserContext.tokens[parserContext.index])) {
if (this.isWhitespace(parserContext.token())) {
return 'simpleKeyName';
} else {
parserContext.stack.push(parserContext.tokens[parserContext.index]);
parserContext.stack.push(parserContext.token());
return 'closeMustache';
}
},
setDelimiterStart: function(parserContext, contextStack) {
if (this.isWhitespace(parserContext.tokens[parserContext.index]) ||
parserContext.tokens[parserContext.index]==='=') {
if (this.isWhitespace(parserContext.token()) ||
parserContext.token()==='=') {
throw new ParserException('Syntax error in Set Delimiter tag');
} else {
parserContext.stack.push(parserContext.tokens[parserContext.index]);
parserContext.stack.push(parserContext.token());
return 'setDelimiterStartOrWhitespace';
}
},
setDelimiterStartOrWhitespace: function(parserContext, contextStack) {
if (this.isWhitespace(parserContext.tokens[parserContext.index])) {
if (this.isWhitespace(parserContext.token())) {
return 'setDelimiterEnd';
} else if (parserContext.tokens[parserContext.index]==='='){
} else if (parserContext.token()==='='){
throw new ParserException('Syntax error in Set Delimiter tag');
} else {
parserContext.stack.push(parserContext.stack.pop() + parserContext.tokens[parserContext.index]);
parserContext.stack.push(parserContext.stack.pop() + parserContext.token());
return 'setDelimiterStartOrWhitespace';
}
},
setDelimiterEnd: function(parserContext, contextStack) {
if (this.isWhitespace(parserContext.tokens[parserContext.index])) {
if (this.isWhitespace(parserContext.token())) {
return 'setDelimiterEnd';
} else if (parserContext.tokens[parserContext.index]==='=') {
} else if (parserContext.token()==='=') {
throw new ParserException('Syntax error in Set Delimiter tag');
} else {
parserContext.stack.push(parserContext.tokens[parserContext.index]);
parserContext.stack.push(parserContext.token());
return 'setDelimiterEndOrEqualSign';
}
},
setDelimiterEndOrEqualSign: function(parserContext, contextStack) {
if (parserContext.tokens[parserContext.index]==='=') {
if (parserContext.token()==='=') {
return 'setDelimiterExpectClosingTag';
} else if (this.isWhitespace(parserContext.tokens[parserContext.index])) {
} else if (this.isWhitespace(parserContext.token())) {
throw new ParserException('Syntax error in Set Delimiter tag');
} else {
parserContext.stack.push(parserContext.stack.pop() + parserContext.tokens[parserContext.index]);
parserContext.stack.push(parserContext.stack.pop() + parserContext.token());
return 'setDelimiterEndOrEqualSign';
}
},
setDelimiterExpectClosingTag: function(parserContext, contextStack) {
if (parserContext.tokens[parserContext.index]===parserContext.closeTag) {
if (parserContext.token()===parserContext.closeTag) {
var newCloseTag = parserContext.stack.pop();
var newOpenTag = parserContext.stack.pop();
var command = parserContext.stack.pop();
@@ -317,32 +318,32 @@ var Mustache = function() {
},
endSectionScan: function(parserContext, contextStack) {
switch (parserContext.tokens[parserContext.index]) {
switch (parserContext.token()) {
case parserContext.openTag:
return 'expectSectionOrEndSection';
default:
parserContext.stack[parserContext.stack.length-1].content.push(parserContext.tokens[parserContext.index]);
parserContext.stack[parserContext.stack.length-1].content.push(parserContext.token());
return 'endSectionScan';
}
},
expectSectionOrEndSection: function(parserContext, contextStack) {
switch (parserContext.tokens[parserContext.index]) {
switch (parserContext.token()) {
case '#':
case '^':
parserContext.stack[parserContext.stack.length-1].depth++;
parserContext.stack[parserContext.stack.length-1].content.push(parserContext.openTag + parserContext.tokens[parserContext.index]);
parserContext.stack[parserContext.stack.length-1].content.push(parserContext.openTag + parserContext.token());
return 'endSectionScan';
case '/':
parserContext.stack.push({tagType:'endSection'});
return 'simpleKeyName';
default:
parserContext.stack[parserContext.stack.length-1].content.push(parserContext.openTag + parserContext.tokens[parserContext.index]);
parserContext.stack[parserContext.stack.length-1].content.push(parserContext.openTag + parserContext.token());
return 'endSectionScan';
}
},
discard: function(parserContext, contextStack) {
if (parserContext.tokens[parserContext.index]===parserContext.closeTag) {
if (parserContext.token()===parserContext.closeTag) {
return 'text';
} else {
return 'discard';
@@ -361,10 +362,8 @@ var Mustache = function() {
switch (command.tagType) {
case 'section':
parserContext.stack.push({sectionType:'section', key:key, content:[], depth:1});
return 'endSectionScan';
case 'invertedSection':
parserContext.stack.push({sectionType:'invertedSection', key:key, content:[], depth:1});
parserContext.stack.push({sectionType:command.tagType, key:key, content:[], depth:1});
return 'endSectionScan';
case 'variable':
this.render_variable(key, contextStack);


Chargement…
Annuler
Enregistrer