+5
.changeset/strange-crabs-love.md
+5
.changeset/strange-crabs-love.md
+24
src/__tests__/parser.test.ts
+24
src/__tests__/parser.test.ts
···
490
490
value: 'x',
491
491
block: false,
492
492
});
493
+
494
+
expect(parseValue('"" ""')).toEqual({
495
+
kind: Kind.STRING,
496
+
value: '',
497
+
block: false,
498
+
});
499
+
500
+
expect(parseValue('" \\" " ""')).toEqual({
501
+
kind: Kind.STRING,
502
+
value: ' " ',
503
+
block: false,
504
+
});
493
505
});
494
506
495
507
it('parses objects', () => {
···
570
582
expect(parseValue('"""x""" """x"""')).toEqual({
571
583
kind: Kind.STRING,
572
584
value: 'x',
585
+
block: true,
586
+
});
587
+
588
+
expect(parseValue('"""""" """"""')).toEqual({
589
+
kind: Kind.STRING,
590
+
value: '',
591
+
block: true,
592
+
});
593
+
594
+
expect(parseValue('""" \\""" """ """"""')).toEqual({
595
+
kind: Kind.STRING,
596
+
value: ' """ ',
573
597
block: true,
574
598
});
575
599
});
+2
-2
src/parser.ts
+2
-2
src/parser.ts
···
86
86
const floatPartRe = /(?:\.\d+)?[eE][+-]?\d+|\.\d+/y;
87
87
88
88
const complexStringRe = /\\/g;
89
-
const blockStringRe = /"""(?:[\s\S]*?[^\\])?"""/y;
90
-
const stringRe = /"(?:[^\r\n]*?[^\\])?"/y;
89
+
const blockStringRe = /"""(?:"""|(?:[\s\S]*?[^\\])""")/y;
90
+
const stringRe = /"(?:"|[^\r\n]*?[^\\]")/y;
91
91
92
92
function value(constant: true): ast.ConstValueNode;
93
93
function value(constant: boolean): ast.ValueNode;