Как позволить нескольким плагинам редактировать потоковый документ - PullRequest
0 голосов
/ 12 июня 2019

Мне нужно создать текстовый редактор, для которого пользователи могут писать плагины.Я буду использовать привязываемый richtextbox, где я могу связать документ.

Эти плагины могут изменять текст редактора, выделяя, изменяя слова и т. Д.

Редактору также необходимо обрабатывать несколько плагинов одновременно, например, вы вставляете текст и первый плагинслова выделяются жирным шрифтом, а второе - синим.

Теперь моя идея состояла в том, чтобы передать методу плагина (производному от интерфейса плагина) строку в форме документа потока в поле расширенного текста.Затем пользователь может искать слова в тексте и делать свое дело, например, добавляя прогон с определенным цветом вокруг слова.

// <Run FontWeight=\"Bold\" Foreground=\"#FF0000FF\"> WordToHighlight </Run>

Метод возвращает строку или документ потока.

Проблема: если несколько плагинов работают и хотят отредактировать одно и то же слово, уже будет прогон вокруг конкретного слова, но пользователь, пишущий плагин, конечно, не будет знать об этом.

Я пытался исследовать, но я еще не нашел что-то существенное.

Моя общая идея полностью неверна или есть способ решить проблему?

Буду признателен за любую помощь.

public interface IPluginInterface
{
    // The input text would be the flowdocument of the richtextbox
    // The returned string would be the edited flowdocument
    string AlterText(string text);
}

public class HighlightPlugin : IPluginInterface
{
    // The input text would be the flowdocument of the richtextbox
    // The returned string would be the edited flowdocument
    string AlterText(string text)
    {
        // Code that alters the text
    }
}
...