Conversation
cs/Markdown/Markdown.cs
Outdated
There was a problem hiding this comment.
Про именование - "В fork-е этого репозитория создай проект Markdown и реализуй метод Render класса Md." То, что ты решил назвать по-своему не грубая ошибка, но усложняет проверку.
There was a problem hiding this comment.
Класс переименовал, а метод нет, хотя я подчеркнул, что это усложняет проверку.
cs/Markdown/Md.cs
Outdated
There was a problem hiding this comment.
tokenizer, text-parser и renderer предлагаю вынести в конструктор - либо принимай их там в качестве аргументов и один раз сохраняй в полях класса, либо создавай прямо в конструкторе; иначе получается, что на каждый вызов метода ты заново создаёшь экземпляры классов и повышаешь трафик памяти; дополнительно в токенайзере написал про это
cs/Markdown/MarkdownTests.cs
Outdated
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
cs/Markdown/MarkdownTests.cs
Outdated
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
cs/Markdown/MarkdownTests.cs
Outdated
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
cs/Markdown/Tokenizer.cs
Outdated
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
cs/Markdown/Tokenizer.cs
Outdated
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
cs/Markdown/Tokenizer.cs
Outdated
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
cs/Markdown/Tokenizer.cs
Outdated
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
cs/Markdown/HtmlRenderer.cs
Outdated
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
cs/Markdown/MarkdownTests.cs
Outdated
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
There was a problem hiding this comment.
Этот тест-кейс есть в следующем тесте.
There was a problem hiding this comment.
- Некорректно работает с кейсом "#################################"
- Некорректно работает с кейсом "\##Heading"
There was a problem hiding this comment.
1 не соглашусь, если просто "##############" то "", если "##############Heading" то "<h6>Heading</h6>"
установлено ограничение на 6 уровней заголовка, если исправлять, то мне кажется лучше в документации указать просто, что в HTML только 6 уровней заголовков.
2 в данном случае должно вывестись <p>#</p>\n<h1>Heading</h1>? или же <p>##Heading</p>? в спецификации не указан такой случай из-за отсутствия многоуровневых заголовков, смею предположить что первый вариант выглядит логичнее, но при этом ломает представление, тк заголовок и параграф не должны быть в одной строке.
There was a problem hiding this comment.
- Здесь и в других тестах ненужная "@".
- В этом тесте много кейсов, подумай, как следует.
There was a problem hiding this comment.
- Некорректно работает с немного другим кейсом
"__ __"(именно двойные подчёркивания).
There was a problem hiding this comment.
3 вижу странный результат, как в таком случае должны обрабатываться эти подчёркивания? обрабатываться просто как подчёркивания?
в спецификации два кейса:
1 За подчерками, начинающими выделение, должен следовать непробельный символ. Иначе эти_ подчерки_ не считаются выделением
и остаются просто символами подчерка.
2 Если внутри подчерков пустая строка ____, то они остаются символами подчерка.
но строка вроде и не пустая, но при этом с пробелами частично, что и выдаёт результат "_ __"
There was a problem hiding this comment.
Объедини с другими кейсами про заголовки или с другими кейсами про экранирование.
|
|
||
|
|
||
|
|
||
| [Test] |
There was a problem hiding this comment.
Некорректно работает с кейсом _Italic Heading\\\\_ - я здесь экранирую слэш, значит, должно вернуться Italic Heading\, так?
|
|
||
| content.Should().Be("<p>#Start</p>"); | ||
| } | ||
|
|
There was a problem hiding this comment.
- Некорректно работает кейс
"\\"- символ экранирования должен исчезать, только если экранирует что-то, не правда ли? - Подумай о случаях, когда вложенность экранирования больше 1-2 символов.
There was a problem hiding this comment.
Работает с кейсом "_he_ll_", но почему-то не работает с кейсом "_._._".
| public TokenType Type { get; } | ||
| public string Value { get; } | ||
|
|
||
| public Token(TokenType type, string value = "") |
There was a problem hiding this comment.
Да, только конструктор приватный надо было сделать.
@Dimques