From 4f1f5636bb98269bed0871bcf0fd9bd7dba28739 Mon Sep 17 00:00:00 2001 From: Fabrizio <135109076+fabrizio-grafana@users.noreply.github.com> Date: Fri, 2 Feb 2024 16:48:30 +0100 Subject: [PATCH] Tempo: Support backtick strings (#81802) --- public/app/plugins/datasource/tempo/package.json | 2 +- .../datasource/tempo/traceql/highlighting.test.ts | 1 + public/app/plugins/datasource/tempo/traceql/traceql.ts | 8 ++++++++ yarn.lock | 10 +++++----- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/public/app/plugins/datasource/tempo/package.json b/public/app/plugins/datasource/tempo/package.json index fe21608c0c8..2168170f225 100644 --- a/public/app/plugins/datasource/tempo/package.json +++ b/public/app/plugins/datasource/tempo/package.json @@ -9,7 +9,7 @@ "@grafana/e2e-selectors": "workspace:*", "@grafana/experimental": "1.7.9", "@grafana/lezer-logql": "0.2.2", - "@grafana/lezer-traceql": "0.0.13", + "@grafana/lezer-traceql": "0.0.14", "@grafana/monaco-logql": "^0.0.7", "@grafana/o11y-ds-frontend": "workspace:*", "@grafana/runtime": "workspace:*", diff --git a/public/app/plugins/datasource/tempo/traceql/highlighting.test.ts b/public/app/plugins/datasource/tempo/traceql/highlighting.test.ts index e36d2b40f1b..f57ea9f20be 100644 --- a/public/app/plugins/datasource/tempo/traceql/highlighting.test.ts +++ b/public/app/plugins/datasource/tempo/traceql/highlighting.test.ts @@ -169,6 +169,7 @@ describe('Highlighting', () => { ['{span.s"t\\\\at"us}'], ['{ span.s"tat"us" = "GET123 }'], // weird query, but technically valid ['{ duration = 123.456us}'], + ['{ .foo = `GET` && .bar = `P\'O"S\\T` }'], ])('valid query - %s', (query: string) => { expect(getErrorNodes(query)).toStrictEqual([]); }); diff --git a/public/app/plugins/datasource/tempo/traceql/traceql.ts b/public/app/plugins/datasource/tempo/traceql/traceql.ts index b9280e4357a..b2d23399da1 100644 --- a/public/app/plugins/datasource/tempo/traceql/traceql.ts +++ b/public/app/plugins/datasource/tempo/traceql/traceql.ts @@ -105,6 +105,7 @@ const language: languages.IMonarchLanguage = { [/'([^'\\]|\\.)*$/, 'string.invalid'], // non-teminated string [/([^\w])(")/, [{ token: '' }, { token: 'string', next: '@string_double' }]], [/([^\w])(')/, [{ token: '' }, { token: 'string', next: '@string_single' }]], + [/([^\w])(`)/, [{ token: '' }, { token: 'string', next: '@string_back' }]], // delimiters and operators [/[{}()\[\]]/, 'delimiter.bracket'], @@ -140,6 +141,13 @@ const language: languages.IMonarchLanguage = { [/\\./, 'string.escape.invalid'], [/'/, 'string', '@pop'], ], + + string_back: [ + [/[^\\`]+/, 'string'], + [/@escapes/, 'string.escape'], + [/\\./, 'string.escape.invalid'], + [/`/, 'string', '@pop'], + ], }, }; diff --git a/yarn.lock b/yarn.lock index 0e8512f817c..80093f1daa0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3243,7 +3243,7 @@ __metadata: "@grafana/e2e-selectors": "workspace:*" "@grafana/experimental": "npm:1.7.9" "@grafana/lezer-logql": "npm:0.2.2" - "@grafana/lezer-traceql": "npm:0.0.13" + "@grafana/lezer-traceql": "npm:0.0.14" "@grafana/monaco-logql": "npm:^0.0.7" "@grafana/o11y-ds-frontend": "workspace:*" "@grafana/plugin-configs": "npm:10.4.0-pre" @@ -3619,12 +3619,12 @@ __metadata: languageName: node linkType: hard -"@grafana/lezer-traceql@npm:0.0.13": - version: 0.0.13 - resolution: "@grafana/lezer-traceql@npm:0.0.13" +"@grafana/lezer-traceql@npm:0.0.14": + version: 0.0.14 + resolution: "@grafana/lezer-traceql@npm:0.0.14" peerDependencies: "@lezer/lr": ^1.3.0 - checksum: 10/e87bebbe62e1b4b9a61576c8be3248f16d7f2739acbe339718f9797bb74a94adf9c42e34f9e8df09d3c592d591858fede2bb1867dcaffc86b9d968ea7c85d8f6 + checksum: 10/5ff0e2e6fa8d042f377046cc4aab95d46ca61f12da4bf1ba8f75c228c841072838c157233fb3f2a9ddc6be63df6e31ab8116738b2ae6bc69e8e122f3a061de2a languageName: node linkType: hard