From 20a91bcdbfb3430a9e842ee2fb609062c9266b44 Mon Sep 17 00:00:00 2001 From: Yury Delendik Date: Thu, 20 Mar 2014 11:50:12 -0500 Subject: [PATCH] Fixes ignoring of the escaped CR LF --- src/core/parser.js | 7 ++++++- test/unit/parser_spec.js | 11 +++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/core/parser.js b/src/core/parser.js index 0eb62c501..205a34cad 100644 --- a/src/core/parser.js +++ b/src/core/parser.js @@ -587,7 +587,12 @@ var Lexer = (function LexerClosure() { strBuf.push(String.fromCharCode(x)); break; - case 0x0A: case 0x0D: // LF, CR + case 0x0D: // CR + if (this.peekChar() === 0x0A) { // LF + this.nextChar(); + } + break; + case 0x0A: // LF break; default: strBuf.push(String.fromCharCode(ch)); diff --git a/test/unit/parser_spec.js b/test/unit/parser_spec.js index fdab17a0d..e03cdd90f 100644 --- a/test/unit/parser_spec.js +++ b/test/unit/parser_spec.js @@ -61,6 +61,17 @@ describe('parser', function() { expect(result).toEqual('p!U"$2'); }); + + it('should ignore escaped CR and LF', function() { + // '(\101\\102)' + // should be parsed as + // "AB" + var input = new StringStream('(\\101\\\r\n\\102\\\r\\103\\\n\\104)'); + var lexer = new Lexer(input); + var result = lexer.getString(); + + expect(result).toEqual('ABCD'); + }); }); });