159. Редактор разметки текстов

Не решаласьСредняя

Чтобы упростить жизнь контент-менеджеру сайта, сделали простую CMS, в которой тексты статей набираются в кастомной разметке.

Набор операторов ограничен:

  • Заголовки
  • Неупорядоченные списки одного уровня вложенности
  • Абзацы — Ссылки

Необходимо написать тело преобразующей функции

module.exports = (str) => {
    //  Ваш код здесь
};

Формат ввода


= head

text ((https://ya.ru link)) text.

* item
* item

Формат вывода

<h1>head</h1><p>text <a href="https://ya.ru">link</a> text.</p><ul><li>item</li><li>item</li></ul>

Примечание

  • Незначимые пробелы и переносы строк на выходе не имеют значения, т.к. в тестах html приводится к одной строке, а лишние пробелы удаляются;
  • Одинарные кавычки в тесте приводятся к двойным;
  • Формат заголовка (Начало строки, знак равно, пробел, текст заголовка, конец строки);
  • Формат абзаца (Начало строки, текст абзаца, конец строки);
  • Формат списка (Пункт списка, повторенный один и более раз: Начало строки, звёздочка, пробел, текст, конец строки. До и после списка пустые строки);
  • Формат ссылки (Две открывающие скобки, адрес ссылки, первый пробел, текст ссылки с любым кол-вом пробелов, две закрывающие скобки)

Ограничения

Ограничение времени

1 с

Ограничение памяти

64 МБ

Пример 1

Ввод

* test

Вывод
<ul><li>test</li></ul>

Пример 2

Ввод

* item
* item

Вывод
<ul><li>item</li><li>item</li></ul>

Пример 3

Ввод

* test

* test 2

Вывод
<ul><li>test</li></ul><ul><li>test 2</li></ul>

Пример 4

Ввод
test
Вывод
<p>test</p>

Пример 5

Ввод

= head

text ((https://ya.ru link)) text.

* item
* item
Вывод
<h1>head</h1><p>text <a href="https://ya.ru">link</a> text.</p><ul><li>item</li><li>item</li></ul>

Теги

JavaScript Node.js 12
Нужно войти, чтобы отправить решение.Войти