Conversation
cs/Markdown/HtmlRender/HtmlRender.cs
Outdated
There was a problem hiding this comment.
Тут бы в конце указать что если нужный тип не нашёлся, то пожаловаться типа "братан, ты чёто не то от меня просишь"
cs/Markdown/HtmlRender/HtmlRender.cs
Outdated
There was a problem hiding this comment.
Не понял зачем скобочку отдельно выделять
cs/Markdown/HtmlRender/HtmlRender.cs
Outdated
There was a problem hiding this comment.
Вообще наличие свича не нравится. Сам свич красивый, но тут оформлены только самые популярные теги, а если здесь обозначить все маркдаун теги, то свич пару сотен строк точно займёт
Тут для каждого типа ноды есть одинаковый функционал:
- Открывающий тег (с атрибутами если надо)
- Внутрянка
- Закрывающий тег
Выглядит будто это можно вынести в отдельное место
cs/Markdown/Lexer/Lexer.cs
Outdated
There was a problem hiding this comment.
Тут то же самое. Понятно, есть уникальная логика для двойной земли, но остальное можно объединить
Да я бы и земли тоже попытался объединить, тк, например, кроме заголовка h1 есть h2, h3, и они обозначаются двумя и тремя решётками. То есть вообще нет гарантий, что не надо будет добавлять в обработчик тег, обрабатываемый одним символом
cs/Markdown/Parser/Parser.cs
Outdated
There was a problem hiding this comment.
Можно написать
public DocumentNode Parse() // без static
{
var nodes = ParseDocument();
return new DocumentNode(nodes);
}
и вызывать это так:
new Parser(tokens).Parse()
Шо то шо это, просто статический метод ломает полиморфизм через колено
No description provided.