Здравствуйте, VladD2, Вы писали:
Сорри за задержки, вечно не хватает времени.
Что нового в новой
версии:
1. Появились свойства ProportionalFontFamily, ProportionalFontSize — для тэга code,
FixedFontFamily, FixedFontSize — для остальных
2. Новая обработка параметров
<params>
<param attrs="[NotNull]" name="loc" typeShortName="Location" typeFullName="Nemerle.Compiler.Location">description</param>
<param .../>
<param .../>
</params>
Тут есть замечания:
— как обрабатывать attrs(примерчик бы)
— description реализован как сабхинт к name и к type, может надо было как-то иначе
— name и type некликабельные, т.е. для них нельзя задать handler, а может оно и не надо
Парсинг:
Основная сложность возникает из-за тэга pre.
Вне его все пробельные символы должны заменяться на пробел(эмуляция html).
Кроме того, после парсинга в выходной структуре для построения UI этого тэга не должно быть.
В предыдущей версии были некоторые сложности из-за динамического params,
сейчас этот код благополучно убран.
Краткое описание классов:
класс RootText — содержит исходный текст в виде массива символов
класс ParseToken — базовый класс для TextToken, ElementToken, содержит границы элементов в исходном тексте
класс TextToken — представляет часть исходного текста (а-ля XText),
класс ElementToken — содержит распарсенные аттрибуты, подэлементы (TextToken или ElementToken )
класс RootToken — распарсивает исходный текст в токены
класс HintParser — основной класс, создает RootToken, затем как постобработка, идет удаление пробельных символов и тэга pre.
Также добавил немного комментов и почистил код.
Надеюсь теперь будет полегче с пониманием.
PS В svn коммить лучше сам