Skip to content

Commit c7172ca

Browse files
author
Sebastian McKenzie
committed
fix multiple keys parsing
1 parent b63e20f commit c7172ca

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

src/lockfile/parse.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ export function* tokenise(input: string): Iterator<Token> {
123123
let name = "";
124124
for (let i = 0; i < input.length; i++) {
125125
let char = input[i];
126-
if (char === ":" || char === " " || char === "\n") {
126+
if (char === ":" || char === " " || char === "\n" || char === ",") {
127127
break;
128128
} else {
129129
name += char;
@@ -228,18 +228,25 @@ export class Parser {
228228
invariant(key, "Expected a key");
229229

230230
let keys = [key];
231+
this.next();
231232

232233
// support multiple keys
233-
while (this.eat(TOKEN_TYPES.comma)) {
234+
while (this.token.type === TOKEN_TYPES.comma) {
235+
this.next(); // skip comma
236+
234237
let keyToken = this.token;
235-
this.expect(TOKEN_TYPES.string);
238+
if (keyToken.type !== TOKEN_TYPES.string) {
239+
this.unexepcted("Expected string");
240+
}
236241

237242
let key = keyToken.value;
238243
invariant(key, "Expected a key");
239244
keys.push(key);
245+
this.next();
240246
}
241247

242-
let valToken = this.next();
248+
let valToken = this.token;
249+
243250
if (valToken.type === TOKEN_TYPES.colon) { // object
244251
this.next();
245252

0 commit comments

Comments
 (0)