diff options
| author | Jeremy Tymes | 2012-11-27 11:00:46 -0500 | 
|---|---|---|
| committer | Misko Hevery | 2013-01-17 23:08:38 -0800 | 
| commit | a179a9a96eda5c566bda8a70ac8a75822c936a68 (patch) | |
| tree | 42a1f70c0176a2957874a70781d64f268401240c /src/ng/parse.js | |
| parent | 610a5a0c14a71be6cd147c665f80478515bfb576 (diff) | |
| download | angular.js-a179a9a96eda5c566bda8a70ac8a75822c936a68.tar.bz2 | |
feat($parse): allow strict equality in angular expressions
Allows the parser to parse strict equality and inequality
in angular expressions.
Closes #908
Diffstat (limited to 'src/ng/parse.js')
| -rw-r--r-- | src/ng/parse.js | 18 | 
1 files changed, 13 insertions, 5 deletions
| diff --git a/src/ng/parse.js b/src/ng/parse.js index 97aba113..5a70979a 100644 --- a/src/ng/parse.js +++ b/src/ng/parse.js @@ -20,6 +20,8 @@ var OPERATORS = {      '%':function(self, locals, a,b){return a(self, locals)%b(self, locals);},      '^':function(self, locals, a,b){return a(self, locals)^b(self, locals);},      '=':noop, +    '===':function(self, locals, a, b){return a(self, locals)===b(self, locals);}, +    '!==':function(self, locals, a, b){return a(self, locals)!==b(self, locals);},      '==':function(self, locals, a,b){return a(self, locals)==b(self, locals);},      '!=':function(self, locals, a,b){return a(self, locals)!=b(self, locals);},      '<':function(self, locals, a,b){return a(self, locals)<b(self, locals);}, @@ -70,9 +72,14 @@ function lex(text, csp){        continue;      } else {        var ch2 = ch + peek(), +          ch3 = ch2 + peek(2),            fn = OPERATORS[ch], -          fn2 = OPERATORS[ch2]; -      if (fn2) { +          fn2 = OPERATORS[ch2], +          fn3 = OPERATORS[ch3]; +      if (fn3) { +        tokens.push({index:index, text:ch3, fn:fn3}); +        index += 3; +      } else if (fn2) {          tokens.push({index:index, text:ch2, fn:fn2});          index += 2;        } else if (fn) { @@ -94,8 +101,9 @@ function lex(text, csp){      return chars.indexOf(lastCh) != -1;    } -  function peek() { -    return index + 1 < text.length ? text.charAt(index + 1) : false; +  function peek(i) { +    var num = i || 1; +    return index + num < text.length ? text.charAt(index + num) : false;    }    function isNumber(ch) {      return '0' <= ch && ch <= '9'; @@ -456,7 +464,7 @@ function parser(text, json, $filter, csp){    function equality() {      var left = relational();      var token; -    if ((token = expect('==','!='))) { +    if ((token = expect('==','!=','===','!=='))) {        left = binaryFn(left, token.fn, equality());      }      return left; | 
