Skip to content

Conversation

@easyThingsLover
Copy link

No description provided.

RenderNodes(doc.Children, sb);
break;
}
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тут бы в конце указать что если нужный тип не нашёлся, то пожаловаться типа "братан, ты чёто не то от меня просишь"

RenderNodes(heading.Children, sb);

sb.Append("</h1");
sb.Append(">");
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не понял зачем скобочку отдельно выделять


private static void RenderNode(Node node, StringBuilder sb)
{
switch (node)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вообще наличие свича не нравится. Сам свич красивый, но тут оформлены только самые популярные теги, а если здесь обозначить все маркдаун теги, то свич пару сотен строк точно займёт

Тут для каждого типа ноды есть одинаковый функционал:

  1. Открывающий тег (с атрибутами если надо)
  2. Внутрянка
  3. Закрывающий тег

Выглядит будто это можно вынести в отдельное место

{
var c = cursor.Current;

switch (c)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тут то же самое. Понятно, есть уникальная логика для двойной земли, но остальное можно объединить

Да я бы и земли тоже попытался объединить, тк, например, кроме заголовка h1 есть h2, h3, и они обозначаются двумя и тремя решётками. То есть вообще нет гарантий, что не надо будет добавлять в обработчик тег, обрабатываемый одним символом

indexer = new TokenIndexer(tokens);
}

public static DocumentNode Parse(List<Token> tokens)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Можно написать

public DocumentNode Parse() // без static
{
        var nodes = ParseDocument();
        return new DocumentNode(nodes);
}

и вызывать это так:
new Parser(tokens).Parse()

Шо то шо это, просто статический метод ломает полиморфизм через колено

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants