Browse Source

Fixes getString

Yury Delendik 12 years ago
parent
commit
95e5429707
  1. 4
      src/parser.js
  2. 13
      test/unit/parser_spec.js

4
src/parser.js

@ -360,6 +360,7 @@ var Lexer = (function LexerClosure() { @@ -360,6 +360,7 @@ var Lexer = (function LexerClosure() {
do {
ch = stream.getChar();
switch (ch) {
case null:
case undefined:
warn('Unterminated string');
done = true;
@ -378,6 +379,7 @@ var Lexer = (function LexerClosure() { @@ -378,6 +379,7 @@ var Lexer = (function LexerClosure() {
case '\\':
ch = stream.getChar();
switch (ch) {
case null:
case undefined:
warn('Unterminated string');
done = true;
@ -427,10 +429,12 @@ var Lexer = (function LexerClosure() { @@ -427,10 +429,12 @@ var Lexer = (function LexerClosure() {
break;
default:
str += ch;
break;
}
break;
default:
str += ch;
break;
}
} while (!done);
return str;

13
test/unit/parser_spec.js

@ -14,6 +14,19 @@ describe('parser', function() { @@ -14,6 +14,19 @@ describe('parser', function() {
expect(result).toEqual(11.234);
});
it('should stop parsing strings at the end of stream', function() {
var input = new StringStream('1$4)');
input.getChar = function(super_getChar) {
// simulating end of file using null (see issue 2766)
var ch = super_getChar.call(input);
return ch == '$' ? null : ch;
}.bind(input, input.getChar);
var lexer = new Lexer(input);
var result = lexer.getString();
expect(result).toEqual('1');
});
it('should not throw exception on bad input', function() {
// '8 0 2 15 5 2 2 2 4 3 2 4'
// should be parsed as

Loading…
Cancel
Save