# RazorConsole — Кастомные VDOM-трансляторы ## Архитектура RazorConsole использует Virtual DOM (VDOM) для преобразования Razor-компонентов в Spectre.Console `IRenderable`. Система трансляторов (translators) является расширяемой: можно добавить поддержку новых Spectre.Console-конструкций или построить полностью кастомные компоненты. ### Ключевые компоненты #### `IVdomElementTranslator` ```csharp public interface IVdomElementTranslator { // Чем меньше значение — тем выше приоритет (обрабатывается раньше). int Priority { get; } bool TryTranslate(VNode node, TranslationContext context, out IRenderable? renderable); } ``` #### `TranslationContext` ```csharp public sealed class TranslationContext { // Рекурсивный перевод дочерних узлов public bool TryTranslate(VNode node, out IRenderable? renderable); } ``` #### `VdomSpectreTranslator` Оркестратор, который: 1. Получает список трансляторов через DI (отсортированных по приоритету) 2. Пробует каждый по очереди 3. Возвращает первый успешный результат 4. Предоставляет статические вспомогательные методы ### Pipeline трансляции ``` Razor-компонент → ConsoleRenderer → VNode tree → VdomSpectreTranslator → [Priority 10] → [Priority 20] → ... → [Priority 1000 (fallback)] → IRenderable ``` --- ## Встроенные трансляторы | Приоритет | Транслятор | Обрабатывает | |---|---|---| | 10 | TextElementTranslator | `` | | 20 | HtmlInlineTextElementTranslator | ``, ``, `` | | 30 | ParagraphElementTranslator | `

` | | 40 | SpacerElementTranslator | `

` | | 50 | NewlineElementTranslator | `
` | | 60 | SpinnerElementTranslator | `
` | | 70–80 | Button translators | `