Skip to content

Commit 2854e53

Browse files
committed
Merge pull request #202 from cscott/fix-readwhile
Fix the Reader#readWhile implementation.
2 parents b345d05 + 9addf53 commit 2854e53

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

src/util/StringReader.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -204,11 +204,11 @@ StringReader.prototype = {
204204
readWhile: function(filter){
205205

206206
var buffer = "",
207-
c = this.read();
207+
c = this.peek();
208208

209209
while(c !== null && filter(c)){
210-
buffer += c;
211-
c = this.read();
210+
buffer += this.read();
211+
c = this.peek();
212212
}
213213

214214
return buffer;

tests/util/StringReader.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,23 @@
172172
Assert.areEqual(testString, result);
173173
Assert.areEqual(1, reader.getLine());
174174
Assert.areEqual(13, reader.getCol());
175+
},
176+
177+
/*
178+
* Tests that the filter function works.
179+
*/
180+
testReadWhileFilter: function(){
181+
var testString = "Hello world!",
182+
reader = new StringReader(testString);
183+
184+
var result = reader.readWhile(function(c){
185+
return c !== ' ';
186+
});
187+
188+
Assert.areEqual('Hello', result);
189+
Assert.areEqual(reader.peek(), ' ');
190+
Assert.areEqual(1, reader.getLine());
191+
Assert.areEqual(6, reader.getCol());
175192
}
176193
}));
177194

0 commit comments

Comments
 (0)