- Разработайте конвертер из
Markdown
-разметки вHTML
. - Конвертер должен поддерживать следующие возможности:
- Абзацы текста разделяются пустыми строками.
- Элементы строчной разметки: выделение (* или _), сильное выделение (** или __), зачеркивание (--), код (`)
- Заголовки (# * уровень заголовка)
- Конвертер должен называться
md2html.Md2Html
и принимать два аргумента: название входного файла сMarkdown
-разметкой и название выходного файла cHTML
-разметкой. Оба файла должны иметь кодировкуUTF-8
. - Конвертер может хранить исходные и сконвертированные данные в памяти, в том числе, одновременно.
- Пример Входной файл
# Заголовок первого уровня
## Второго
### Третьего ## уровня
#### Четвертого
# Все еще четвертого
Этот абзац текста,
содержит две строки.
# Может показаться, что это заголовок.
Но нет, это абзац начинающийся с `#`.
#И это не заголовок.
###### Заголовки могут быть многострочными
(и с пропуском заголовков предыдущих уровней)
Мы все любим *выделять* текст _разными_ способами.
**Сильное выделение**, используется гораздо реже,
но __почему бы и нет__?
Немного --зачеркивания-- еще ни кому не вредило.
Код представляется элементом `code`.
Обратите внимание, как экранируются специальные
HTML-символы, такие как `<`, `>` и `&`.
Знаете ли вы, что в Markdown, одиночные * и _
не означают выделение?
Они так же могут быть заэкранированы
при помощи обратного слэша: \*.
Лишние пустые строки должны игнорироваться.
Любите ли вы *вложеные __выделения__* так,
как __--люблю--__ их я?
Выходной файл
<h1>Заголовок первого уровня</h1>
<h2>Второго</h2>
<h3>Третьего ## уровня</h3>
<h4>Четвертого
# Все еще четвертого</h4>
<p>Этот абзац текста,
содержит две строки.</p>
<p> # Может показаться, что это заголовок.
Но нет, это абзац начинающийся с <code>#</code>.</p>
<p>#И это не заголовок.</p>
<h6>Заголовки могут быть многострочными
(и с пропуском заголовков предыдущих уровней)</h6>
<p>Мы все любим <em>выделять</em> текст <em>разными</em> способами.
<strong>Сильное выделение</strong>, используется гораздо реже,
но <strong>почему бы и нет</strong>?
Немного <s>зачеркивания</s> еще ни кому не вредило.
Код представляется элементом <code>code</code>.</p>
<p>Обратите внимание, как экранируются специальные
HTML-символы, такие как <code><</code>, <code>></code> и <code>&</code>.</p>
<p>Знаете ли вы, что в Markdown, одиночные * и _
не означают выделение?
Они так же могут быть заэкранированы
при помощи обратного слэша: *.</p>
<p>Лишние пустые строки должны игнорироваться.</p>
<p>Любите ли вы <em>вложеные <strong>выделения</strong></em> так,
как <strong><s>люблю</s></strong> их я?</p>