From 4b0d5c54d25aa131862dfd859f9a0e16715adb34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Grzegorz=20Wcis=C5=82o?= Date: Wed, 3 Oct 2018 17:59:21 +0200 Subject: [PATCH] Fix yaml string tokenization --- src/yaml/yaml.test.ts | 29 +++++++++++++++++++++++++++++ src/yaml/yaml.ts | 24 +++++++++--------------- 2 files changed, 38 insertions(+), 15 deletions(-) diff --git a/src/yaml/yaml.test.ts b/src/yaml/yaml.test.ts index 553d4fff..0d644026 100644 --- a/src/yaml/yaml.test.ts +++ b/src/yaml/yaml.test.ts @@ -241,6 +241,35 @@ testTokenization('yaml', [ },] }], + // Flow Scalars + [{ + line: '\'this is a single quote string\'', + tokens: [{ + startIndex: 0, + type: 'string.yaml' + }] + }], + + [{ + line: "\"this is a double \\quote string\\n\"", + tokens: [{ + startIndex: 0, + type: 'string.yaml' + }, { + startIndex: 18, + type: 'string.escape.invalid.yaml' + }, { + startIndex: 20, + type: 'string.yaml' + }, { + startIndex: 31, + type: 'string.escape.yaml' + }, { + startIndex: 33, + type: 'string.yaml' + }] + }], + // Flow Sequence - Data types [{ line: '[string,"double",\'single\',1,1.1,2002-04-28]', diff --git a/src/yaml/yaml.ts b/src/yaml/yaml.ts index ee6f8fe5..779acb0f 100644 --- a/src/yaml/yaml.ts +++ b/src/yaml/yaml.ts @@ -156,19 +156,6 @@ export const language = { }] ], - // Flow Scalars (quoted strings) - string: [ - [/[^\\"']+/, 'string'], - [/@escapes/, 'string.escape'], - [/\\./, 'string.escape.invalid'], - [/["']/, { - cases: { - '$#==$S2': { token: 'string', next: '@pop' }, - '@default': 'string' - } - }] - ], - // First line of a Block Style multiString: [ [/^( +).+$/, 'string', '@multiStringContinued.$1'] @@ -202,8 +189,15 @@ export const language = { // Start Flow Scalars (quoted strings) flowScalars: [ - [/"/, 'string', '@string."'], - [/'/, 'string', '@string.\''] + [/'[^']*'/, 'string'], + [/"/, 'string', '@doubleQuotedString'] + ], + + doubleQuotedString: [ + [/[^\\"]+/, 'string'], + [/@escapes/, 'string.escape'], + [/\\./, 'string.escape.invalid'], + [/"/, 'string', '@pop'] ], // Start Block Scalar