На государственном портале предоставления услуг сделали возможность подавать заявление на получение документов полностью автоматически, для этого надо только заполнить таблицу с персональными данными.Эти данные затем передаются на проверку в несколько инстанций, включая МВД. После начала тестирования выяснилось, что МВД принимает данные в формате markdown, а ГосУслуги пользуются html-форматом. Помогите написать скрипт миграции одного формата в другой, чтобы ребята поскорее запустились.Вам нужно написать функцию, которая на вход принимает HTML-таблицу и преобразует ее в markdown-подобную разметку.В качестве решения этого задания отправьте файл .js, в котором объявлена функция solution:
function solution(input) {
// ...
}
Формат ввода
HTML-таблица приходит в виде строки:
<table>
<colgroup>
<col align="right" />
<col />
<col align="center" />
</colgroup>
<thead>
<tr>
<td>Command </td>
<td>Description </td>
<th>Is implemented </th>
</tr>
</thead>
<tbody>
<tr>
<th>git status</th>
<td>List all new or modified files</td>
<th>Yes</th>
</tr>
<tr>
<th>git diff</th>
<td>Show file differences that haven’t been
staged</td>
<td>No</td>
</tr>
</tbody>
</table>
В таблице могут содержаться теги colgroup, thead и tbody в фиксированном порядке.
Все эти теги опциональны, но всегда будет присутствовать как минимум thead либо tbody.colgroup содержит теги col, у которых может быть опциональный атрибут align с одним из трех значений (left|center|right)
thead и tbody содержат 1 или более tr
tr, в свою очередь, содержат как td, так и th
В таблице всегда будет хотя бы одна строка.
В строке всегда будет хотя бы одна ячейка.
В ячейке всегда присутствует хотя бы один не-whitespace символ.Количество элементов th/td в строках всегда совпадает между всеми строками и с количеством элементов col в colgroup, при наличии colgroup.Пробелы и переносы строк в исходном HTML могут встречаться в любом месте, не нарушающем валидность HTML.
Формат вывода
На выходе должна получиться строка с markdown-разметкой:
| Command | Description | **Is implemented** |
| ---: | :--- | :---: |
| **git status** | List all new or modified files | **Yes** |
| **git diff** | Show file differences that haven’t been staged | No |
Первая встретившаяся строка в таблице должна всегда превращаться в строку-заголовок в markdown-разметке.
Все остальные строки идут в тело таблицы.
Разделитель заголовка выводится всегда.Содержимое td вставляется как есть, содержимое th как **bold**.
Между содержимым ячейки в markdown-разметке и разделителями ячеек (|) всегда один пробел.Пробелы по краям содержимого тегов td и th должны быть удалены.
Переносы строк в содержимом ячеек должны быть удалены.
Более одного пробела подряд в содержимом ячеек должны быть заменены одним пробелом.За выравнивание в ячейках столбцов markdown-таблицы отвечает форматирование разделителя заголовка:
| :--- | значит выравнивание по левому краю
| :---: | значит выравнивание по центру
| ---: | значит выравнивание по правому краю
При отсутствии заданного в теге col атрибута align выравнивание должно быть задано влево.
Примечания
Для перевода строки нужно использовать символ \n.
Решение будет проверяться в браузерном окружении (Chrome 78) с доступом к объектам document и window.
Можно использовать синтаксис до es2018 включительно.