Highlighter now works on the whole line.

This commit is contained in:
Mike Krüger 2024-05-06 09:32:24 +02:00 коммит произвёл Patrik Svensson
Родитель 51ff1df98c
Коммит d53819824f
4 изменённых файлов: 24 добавлений и 16 удалений

Просмотреть файл

@ -1,4 +1,6 @@
using Esprima;
using Spectre.Console;
using Spectre.Console.Rendering;
namespace RadLine.Examples
{
@ -41,10 +43,9 @@ namespace RadLine.Examples
return highlighter;
}
public Style Highlight(string token)
public IRenderable BuildHighlightedText(string text)
{
return _highlighter.Highlight(token);
return _highlighter.BuildHighlightedText(text);
}
}
}

Просмотреть файл

@ -1,9 +1,9 @@
using Spectre.Console;
using Spectre.Console.Rendering;
namespace RadLine
{
public interface IHighlighter
{
Style? Highlight(string token);
IRenderable BuildHighlightedText(string text);
}
}

Просмотреть файл

@ -239,14 +239,7 @@ namespace RadLine
return new Text(text);
}
var paragraph = new Paragraph();
foreach (var token in StringTokenizer.Tokenize(text))
{
var style = string.IsNullOrWhiteSpace(token) ? null : highlighter.Highlight(token);
paragraph.Append(token, style);
}
return paragraph;
return highlighter.BuildHighlightedText(text);
}
}
}

Просмотреть файл

@ -1,6 +1,8 @@
using System;
using System.Collections.Generic;
using Spectre.Console;
using Spectre.Console.Rendering;
using static System.Net.Mime.MediaTypeNames;
namespace RadLine
{
@ -19,10 +21,22 @@ namespace RadLine
return this;
}
Style? IHighlighter.Highlight(string token)
IRenderable IHighlighter.BuildHighlightedText(string text)
{
_words.TryGetValue(token, out var style);
return style;
var paragraph = new Paragraph();
foreach (var token in StringTokenizer.Tokenize(text))
{
if (_words.TryGetValue(token, out var style))
{
paragraph.Append(token, style);
}
else
{
paragraph.Append(token, null);
}
}
return paragraph;
}
}
}