Markdown в HTML · Шаг 4 из 4
Абзацы и списки
Строки заметки складываются в блоки: несколько строк подряд — один абзац, строки с дефисом впереди — пункты одного списка, пустая строка отделяет блоки друг от друга. Шаблон здесь не поможет: блок — это не одна строка, а несколько, и где он кончается, решает следующая.
Что сделать
Разложите заметку на блоки: заголовки, абзацы и списки — по порядку.
Что приходит
tekst— вся заметка целиком, строки через перевод строки
Что вернуть
Список блоков по порядку: ("zagolovok", строка), ("abzac", текст) или ("spisok", [пункты]).
Допишите функцию bloki в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В проекте
Утилита зовёт bloki один раз на всю заметку и из каждого блока делает заголовок, <p> или <ul> с пунктами. Решите шаг — и страница станет страницей, а не одной длинной строкой.
bloki("Купить:\n- хлеб\n- молоко\n\nВсё.")
[('abzac', 'Купить:'), ('spisok', ['хлеб', 'молоко']), ('abzac', 'Всё.')]
Каждая строка сначала очищается от пробелов по краям. Дальше:
- пустая строка заканчивает текущий абзац или список;
- заголовок — строка, которая начинается с 1–6 решёток и пробела после них: отдельный блок
("zagolovok", строка), абзац или список перед ним заканчивается; - пункт списка — строка, которая начинается с
-или*(знак и хотя бы один пробел): пункты подряд — один список("spisok", [тексты пунктов]), текст пункта — без знака и пробелов после него; абзац перед пунктом заканчивается; - остальное — строка абзаца: строки подряд склеиваются через один пробел в
("abzac", текст); список перед ней заканчивается.
*курсив* в начале строки — не пункт: после звёздочки нет пробела. Пустых блоков не бывает: заметка из пустых строк даёт пустой список.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.