Посмотрите этот файл в сыром виде. Сравните с тем, что показывает github. Все совпадения случайны ;)
Текст, окруженный с двух сторон одинарными символами подчерка, должен помещаться в HTML-тег <em> вот так:
Текст, <em>окруженный с двух сторон</em> одинарными символами подчерка, должен помещаться в HTML-тег <em>.
Выделенный двумя символами текст должен становиться полужирным с помощью тега <strong>.
Любой символ можно экранировать, чтобы он не считался частью разметки. _Вот это_, не должно выделиться тегом <em>.
Символ экранирования исчезает из результата, только если экранирует что-то. Здесь сим\волы экранирования\ \должны остаться.\
Символ экранирования тоже можно экранировать: \вот это будет выделено тегом <em>
Внутри двойного выделения одинарное тоже работает.
Но не наоборот — внутри одинарного двойное не работает.
Подчерки внутри текста c цифрами_12_3 не считаются выделением и должны оставаться символами подчерка.
Однако выделять часть слова они могут: и в нач_але, и в сер_еди_не, и в кон_це.
В то же время выделение в ра_зных сл_овах не работает.
_Непарные символы в рамках одного абзаца не считаются выделением.
За подчерками, начинающими выделение, должен следовать непробельный символ. Иначе эти_ подчерки_ не считаются выделением и остаются просто символами подчерка.
Подчерки, заканчивающие выделение, должны следовать за непробельным символом. Иначе эти _подчерки не считаются окончанием выделения и остаются просто символами подчерка.
В случае пересечения двойных и одинарных подчерков ни один из них не считается выделением.
Если внутри подчерков пустая строка ____, то они остаются символами подчерка.
Абзац, начинающийся с "# ", выделяется тегом <h1> в заголовок. В тексте заголовка могут присутствовать все прочие символы разметки с указанными правилами.
Таким образом
превратится в:
Строка, начинающаяся с "- " (дефис и пробел), считается пунктом маркированного списка и помещается в HTML-тег <li>. Подряд идущие пункты объединяются в один список, который оборачивается в тег <ul>:
- первый пункт
- второй пункт
превратится в:
- первый пункт
- второй пункт
- Маркером считается только "- " в самом начале строки. Если перед ним стоят пробелы, строка остаётся обычным текстом.
- Если после маркера ничего нет, строка не является пунктом и остаётся обычным текстом: "-пункт" (без пробела), "-" и "- " пунктами не считаются.
- Внутри пункта работают все прочие символы разметки по прежним правилам. Выделение не пересекает границы пунктов: непарные подчерки в соседних пунктах остаются символами подчерка.
- Строка, не являющаяся пунктом (в том числе пустая), завершает список. Следующий пункт начнёт новый список.
- Между пунктами одного списка переводов строк в результате нет. Перевод строки после последнего пункта сохраняется после </ul>.
- Вложенные списки не поддерживаются: "- " внутри пункта остаётся обычным текстом.
- Заголовок внутри пункта не поддерживается: "- # текст" даёт пункт с текстом "# текст".
- Дефис можно экранировать: "- текст" не считается пунктом, а символ экранирования исчезает из результата. Как и для остальных символов разметки, экранирование дефиса работает в любом месте строки.