From cbf442d8fd9f72c567ebf9f036a219a9ff100487 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Sat, 30 Oct 2021 20:14:50 +0200 Subject: feat(web): semantic highlighting --- .../src/main/js/xtext/xtextServiceResults.ts | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'language-web/src/main/js/xtext/xtextServiceResults.ts') diff --git a/language-web/src/main/js/xtext/xtextServiceResults.ts b/language-web/src/main/js/xtext/xtextServiceResults.ts index 6c3d9daf..e32d49c3 100644 --- a/language-web/src/main/js/xtext/xtextServiceResults.ts +++ b/language-web/src/main/js/xtext/xtextServiceResults.ts @@ -198,3 +198,29 @@ export function isContentAssistResult(result: unknown): result is IContentAssist return isDocumentStateResult(result) && isArrayOfType(contentAssistResult.entries, isContentAssistEntry); } + +export interface IHighlightingRegion { + offset: number; + + length: number; + + styleClasses: string[]; +} + +export function isHighlightingRegion(value: unknown): value is IHighlightingRegion { + const region = value as IHighlightingRegion; + return typeof region === 'object' + && typeof region.offset === 'number' + && typeof region.length === 'number' + && isArrayOfType(region.styleClasses, (s): s is string => typeof s === 'string'); +} + +export interface IHighlightingResult { + regions: IHighlightingRegion[]; +} + +export function isHighlightingResult(result: unknown): result is IHighlightingResult { + const highlightingResult = result as IHighlightingResult; + return typeof highlightingResult === 'object' + && isArrayOfType(highlightingResult.regions, isHighlightingRegion); +} -- cgit v1.2.3-54-g00ecf