Как правильно разобрать markdown, полученный с сервера?

Как правильно распарсить многострочный markdown, если строка приходит в одну строку с использованием разных парсеров, таких как markdown-it и showdown?
Изображение к вопросу
Изображение к вопросу
  • 25 октября 2023 г. 10:49
Ответы на вопрос 2
Для правильного разбора многострочного markdown, который пришел в виде одной строки с использованием разных парсеров, вам придется выполнить несколько шагов:

1. Разделить строку на отдельные строки. Если известно, что в исходном markdown используется определенный символ для разделения строк (например, `\n` или `\r\n`), то вы можете использовать метод `split()` для разделения строки на массив строк.

   Например, если исходный markdown разделен символом новой строки `\n`, вы можете использовать следующий код на JavaScript:

   ```javascript
   const markdownString = "Первая строка\nВторая строка\nТретья строка";
   const markdownArray = markdownString.split("\n");
   ```

   В результате получится массив строк `["Первая строка", "Вторая строка", "Третья строка"]`.

2. Построчно пропустите каждую строку через парсер markdown. Для каждой строки примените метод парсера, который конвертирует markdown в HTML или другой формат, согласно его спецификации.

   Например, если вы используете парсер markdown-it на JavaScript, вы можете использовать следующий код для конвертации каждой строки markdown в HTML:

   ```javascript
   const markdownArray = ["Первая строка", "Вторая строка", "Третья строка"];
   const htmlArray = markdownArray.map((markdownLine) => {
     return markdownIt().render(markdownLine);
   });
   ```

   В результате получится массив строк, в котором каждая строка содержит соответствующий HTML-код.

3. Объедините все HTML-строки вместе. Используйте метод соединения строк (например, `join()`) для объединения массива HTML-строк в одну строку.

   Например, чтобы объединить массив HTML-строк в одну, вы можете использовать следующий код:

   ```javascript
   const htmlArray = ["<p>Первая строка</p>", "<p>Вторая строка</p>", "<p>Третья строка</p>"];
   const htmlString = htmlArray.join("");
   ```

   В результате получится одна строка, содержащая все HTML-коды.

Таким образом, следуя этим шагам, вы сможете правильно разобрать многострочный markdown, полученный с сервера.
Возможно, в строке символ новой строки представлен как два символа: слеш и буква "n". Чтобы заменить такие символы на настоящий символ новой строки, можно использовать методы `split("\\n").join("\n")` или `replaceAll("\\\\n", "\n")`.
Похожие вопросы