Данные -> Обработка текста -> MARKDOWN

kagorec

Client
Регистрация
24.08.2013
Сообщения
979
Благодарностей
523
Баллы
93
Уважаемые разработчики

Добавьте пожалуйста кубик MARKDOWN для конвертации контента

MARKDOWN (ru.wikipedia.org/wiki/Markdown) - формат все больше набирает популярность. Благодаря своей простоте и удобству при использовании форматировании текста. Один из примеров: весь текст с оформленными тегами списков, ссылок, параграфов, картинок в формате markdown можно перевести полностью в переводчике translate google без опасения что побьет теги , формат MARKDOWN -> HTML после конвертации гарантирует что html будет правильно сформирован с закрытыми тегами и тд.

Zennoposter работает с веб, в большинстве случаев это HTML, поэтому есть необходимость в конвертации:
HTML -> MARKDOWN
MARKDOWN -> HTML

Это продуктивно скажется при работе с популярными ИИ!

1. Простота синтаксиса
Синтаксис Markdown очень прост и интуитивно понятен. Форматирование текста выполняется при помощи обычных символов, таких как *, _, #, >, которые не отвлекают при чтении исходного текста. Это делает Markdown идеальным для быстрого написания заметок и документации.

2. Кроссплатформенность
Благодаря простому текстовому формату, Markdown одинаково хорошо выглядит как на веб-страницах, так и в приложениях на разных платформах - Windows, Linux, macOS, iOS, Android.

3. Универсальность
Markdown можно использовать для создания самых разных видов контента - статей, документации, readme-файлов, писем, книг, презентаций. При этом контент будет одинаково хорошо читаться в исходном и отформатированном виде.

4. Переносимость
Текст в формате Markdown легко конвертируется в другие форматы, такие как HTML, PDF, DOC, без потери структуры и форматирования. Это позволяет легко публиковать Markdown-документы в вебе или печатных изданиях.

5. Версионируемость
Простой текстовый формат Markdown хорошо работает с системами контроля версий, такими как Git. Это облегчает отслеживание изменений в документах и работу над ними в команде.

6. Расширяемость
Существует множество расширений Markdown, которые добавляют дополнительный функционал - таблицы, ссылки, подсветку синтаксиса и многое другое. Это позволяет адаптировать Markdown под конкретные нужды.

7. Инструменты и интеграции
Для Markdown существует множество отличных редакторов, генераторов статических сайтов, библиотек для разных языков программирования. Markdown легко интегрируется в веб-приложения и сервисы.

8. Лёгкость для чтения и редактирования
Markdown форматирует текст, но при этом сохраняет его лёгким для чтения и редактирования. Это упрощает совместную работу над Markdown-документами.

9. Открытый стандарт
Markdown является открытым стандартом с открытой исходной спецификацией. Это гарантирует его стабильность и поддержку со стороны сообщества.

  1. GitHub (github.com) - популярная платформа для хостинга IT-проектов с открытым исходным кодом. Поддерживает Markdown для форматирования readme-файлов и вики.
  2. Reddit (reddit.com) - крупный новостной агрегатор и форум. Поддерживает Markdown в комментариях и постах.
  3. Stack Overflow (stackoverflow.com) - популярный QA-сайт для программистов. Использует Markdown для форматирования вопросов и ответов.
  4. Slack (slack.com) - популярный мессенджер для команд. Позволяет использовать Markdown в сообщениях.
  5. Discord (discord.com) - популярный мессенджер, особенно среди геймеров. Также поддерживает Markdown.
  6. WhatsApp (whatsapp.com) - самое популярное мобильное приложение для обмена сообщениями. Недавно добавили поддержку Markdown.
  7. Telegram (telegram.org) - бесплатный мессенджер. Позволяет использовать Markdown.
  8. Mattermost (mattermost.com) - открытая альтернатива Slack. Поддерживает Markdown.
  9. Trello (trello.com) - популярный сервис для управления проектами. Использует Markdown в карточках и комментариях.
  10. Notion (notion.so) - мощный сервис для заметок и управления проектами. Поддержка Markdown.
  11. Typora (typora.io) - продвинутый Markdown редактор для Windows, macOS и Linux.
  12. Bear (bear.app) - приложение для заметок на iOS и macOS с поддержкой Markdown.
  13. Simplenote (simplenote.com) - простой сервис для заметок с синхронизацией. Использует Markdown.
  14. Day One (dayoneapp.com) - популярный дневник с поддержкой Markdown.
  15. Zendesk (zendesk.com) - платформа для клиентской поддержки. Поддерживает Markdown для баз знаний.
  16. Jira (atlassian.com/software/jira) - известный инструмент для управления проектами. Использует Markdown в комментариях.
  17. Asana (asana.com) - еще один инструмент для управления задачами. Поддержка Markdown в комментариях.
  18. Obsidian (obsidian.md) - приложение для заметок, основанное на Markdown.
  19. Ghost (ghost.org) - популярная платформа для ведения блогов. Использует Markdown для постов.
  20. WordPress (wordpress.org) - самая популярная CMS для сайтов. Многие плагины добавляют поддержку Markdown.
  21. DokuWiki (dokuwiki.org) - простая вики с открытым исходным кодом. Использует синтаксис, похожий на Markdown.
  22. Jupyter Notebook (jupyter.org) - интерактивная среда для научных вычислений. Поддержка Markdown в ячейках.
  23. boostnote (boostnote.io) - заметки с Markdown для программистов.
  24. HackMD (hackmd.io) - совместное редактирование заметок в реальном времени.
  25. GitBook (gitbook.com) - сервис для создания и публикации книг. Использует Markdown.
  26. Read the Docs (readthedocs.org) - хостинг документации. Поддержка Markdown.
  27. MediaWiki (mediawiki.org) - популярная вики-платформа. Имеет расширение для Markdown.
  28. Bookdown (Bookdown.org) - пакет R для публикации книг. Использует Markdown.
  29. Trilium Notes (github.com/zadam/trilium) - заметки в виде иерархической вики.
  30. CodeMirror (codemirror.net) - текстовый редактор для веб-приложений. Поддержка Markdown.

Поддержите заявку голосованием!)
 
Последнее редактирование:

kagorec

Client
Регистрация
24.08.2013
Сообщения
979
Благодарностей
523
Баллы
93
Покачто есть решение через стороннее приложение.

Pandoc.org - приложение для конвертации контента. Например есть также конвертация HTML <--> MARKDOWN.
MARKDOWN разметка хороша поскольку после конвертации html получается с коректным закрытыми тегами.

Подключить к Zennoposter
C#:
// code v1 - https://zennolab.com/discussion/threads/transforming-html-to-markdown-best-methods.116581/ thank you @Pierre Paul Jacques
// code v2 - https://zennolab.com/discussion/threads/dannye-obrabotka-teksta-markdown.115933/

string htmlContent = project.Variables["pandoc_html_in"].Value;

// Replace 'variable' with your actual output variable name where Markdown will be stored
string markdownOutputVariable = "pandoc_markdown_out";

// Path to Pandoc executable; adjust it according to your system
string pandocPath = @"C:\Program Files\Pandoc\pandoc.exe";

string GenerateRandomString(int length)
{
    const string characters = "abcdefghijklmnopqrstuvwxyz0123456789";
    var random = new Random();
    var sb = new StringBuilder();
    for (int i = 0; i < length; i++)
    {
        sb.Append(characters[random.Next(characters.Length)]);
    }
    return sb.ToString();
}

string tempHtml = GenerateRandomString(7);
string tempMarkdown = GenerateRandomString(9);

string tempHtmlPath = @"T:\pandoc\" + tempHtml + ".html";
string tempMarkdownPath = @"T:\pandoc\" + tempMarkdown + ".md";

try
{
    System.IO.File.WriteAllText(tempHtmlPath, htmlContent);

    //var processInfo = new System.Diagnostics.ProcessStartInfo(pandocPath, $"-f html -t markdown_strict+pipe_tables {tempHtmlPath} -o {tempMarkdownPath}")
    var processInfo = new System.Diagnostics.ProcessStartInfo(pandocPath, $"-f html -t commonmark_x+pipe_tables {tempHtmlPath} -o {tempMarkdownPath}")
     
    {
        CreateNoWindow = true,
        UseShellExecute = false,
        RedirectStandardOutput = true,
        RedirectStandardError = true
    };

    using (var process = System.Diagnostics.Process.Start(processInfo))
    {
        process.WaitForExit();
    }

    string markdownContent = System.IO.File.ReadAllText(tempMarkdownPath);
    project.Variables[markdownOutputVariable].Value = markdownContent;
}
catch (Exception ex)
{
    project.SendInfoToLog("Error during Pandoc execution: " + ex.Message);
}
finally
{
    System.IO.File.Delete(tempHtmlPath);
    System.IO.File.Delete(tempMarkdownPath);
}
 
Последнее редактирование:

backoff

Client
Регистрация
20.04.2015
Сообщения
6 052
Благодарностей
6 481
Баллы
113
Спасибо, сам хотел создать такой топик, ВСЕМИ РУКАМИ ЗА
последние CMS движки (WP) и многие сервисы, аля дзена, давно работают уже с MARKDOWN

Разрабы, просим, просим !!!!
 

Pierre Paul Jacques

Активный пользователь
Регистрация
08.10.2023
Сообщения
134
Благодарностей
35
Баллы
28
Уважаемый @kagorec ,
Я хочу сердечно поблагодарить вас за ваше сообщение на форуме. Ваше объяснение использования формата Markdown в ZennoPoster не только образовательно, но и чрезвычайно ясно и познавательно.

Будучи французом и не владея русским языком, я воспользовался услугами переводчика для написания этого сообщения, поэтому прошу простить за любые неточности в моих словах. Ваше сообщение особенно ценно для меня, так как в настоящее время я интересуюсь "Паразитным SEO" и с нетерпением жду возможности применить ваш метод.

На данный момент я использую временное решение: я открываю страницу, чтобы получить html-рендеринг моей финальной статьи, а затем вручную копирую его, чтобы вставить на платформу, например, Medium... Раньше я использовал онлайн-редакторы кода вроде https://codepen.io/pen/?editors=1000. Так что я постепенно улучшаю свой проект в Zenno, учась новым методам, и, возможно, через год я смогу использовать HTTP-методы запросов: Get, Put, Post...

Сообщество ZennoLab - это прекрасный пример сотрудничества и обмена знаниями, которые преодолевают языковые барьеры. Ваш вклад неоценим и в значительной мере способствует нашему совместному развитию, несмотря на барьеры языка.
С самой искренней благодарностью и на более лёгкой ноте хочу сказать, что благодаря ZennoLab, расстояния между нашими народами, кажется, стираются, и мне приносит удовольствие общение с русскоговорящими!
С теплыми пожеланиями и хорошего вам дня.


Merci:-)
 

kagorec

Client
Регистрация
24.08.2013
Сообщения
979
Благодарностей
523
Баллы
93
... На данный момент я использую временное решение: я открываю страницу, чтобы получить html-рендеринг моей финальной статьи, а затем вручную копирую его, чтобы вставить на платформу, например, Medium... Раньше я использовал онлайн-редакторы кода вроде https://codepen.io/pen/?editors=1000. Так что я постепенно улучшаю свой проект в Zenno, учась новым методам, и, возможно, через год я смогу использовать HTTP-методы запросов: Get, Put, Post...
codepen.io - не нужен, можно локально создавать html файл с содержимым и открывать в броузере (Zennoposter)
 

todayer

Client
Регистрация
07.08.2013
Сообщения
959
Благодарностей
397
Баллы
63

kagorec

Client
Регистрация
24.08.2013
Сообщения
979
Благодарностей
523
Баллы
93

todayer

Client
Регистрация
07.08.2013
Сообщения
959
Благодарностей
397
Баллы
63

winlingt

Client
Регистрация
21.10.2021
Сообщения
9
Благодарностей
2
Баллы
3
Thanks for this !
If it's not too complicated, could you please share the opposite version "Markdown to HTML" ?

I tried my self but my skills are too limited...
 
  • Спасибо
Реакции: Pierre Paul Jacques

kagorec

Client
Регистрация
24.08.2013
Сообщения
979
Благодарностей
523
Баллы
93
Thanks for this !
If it's not too complicated, could you please share the opposite version "Markdown to HTML" ?

I tried my self but my skills are too limited...
C#:
// code v1 - https://zennolab.com/discussion/threads/transforming-html-to-markdown-best-methods.116581/ thank you @Pierre Paul Jacques
// code v2 - https://zennolab.com/discussion/threads/dannye-obrabotka-teksta-markdown.115933/

// Markdown to HTML

// Replace 'YourInputVariable' with your actual input variable name containing HTML content
string htmlContent = project.Variables["pandoc_markdown_in"].Value;

// Replace 'YourOutputVariable' with your actual output variable name where Markdown will be stored
string markdownOutputVariable = "pandoc_html_out";

// Path to Pandoc executable; adjust it according to your system
string pandocPath = @"C:\Program Files\Pandoc\pandoc.exe";


// Temporary file paths for storing intermediate and output files

 string GenerateRandomString(int length)
{
    const string characters = "abcdefghijklmnopqrstuvwxyz0123456789";
    var random = new Random();
    var sb = new StringBuilder();
    for (int i = 0; i < length; i++)
    {
        sb.Append(characters[random.Next(characters.Length)]);
    }
    return sb.ToString();
}

string tempHtml = GenerateRandomString(7);
string tempMarkdown = GenerateRandomString(9);

string tempHtmlPath = @"T:\pandoc\" + tempHtml + ".html";
string tempMarkdownPath = @"T:\pandoc\" + tempMarkdown + ".md";

try
{
    System.IO.File.WriteAllText(tempHtmlPath, htmlContent);

    //var processInfo = new System.Diagnostics.ProcessStartInfo(pandocPath, $"-f markdown -t html {tempHtmlPath} -o {tempMarkdownPath}")
    var processInfo = new System.Diagnostics.ProcessStartInfo(pandocPath, $"-f commonmark_x -t html {tempHtmlPath} -o {tempMarkdownPath}")
    {
        CreateNoWindow = true,
        UseShellExecute = false,
        RedirectStandardOutput = true,
        RedirectStandardError = true
    };

    using (var process = System.Diagnostics.Process.Start(processInfo))
    {
        process.WaitForExit();
    }

    string markdownContent = System.IO.File.ReadAllText(tempMarkdownPath);
    project.Variables[markdownOutputVariable].Value = markdownContent;
}
catch (Exception ex)
{
    project.SendInfoToLog("Error during Pandoc execution: " + ex.Message);
}
finally
{
    System.IO.File.Delete(tempHtmlPath);
    System.IO.File.Delete(tempMarkdownPath);
}
 
  • Спасибо
Реакции: Pierre Paul Jacques и eee

winlingt

Client
Регистрация
21.10.2021
Сообщения
9
Благодарностей
2
Баллы
3
Thanks for reply but this is not working for me :

every output ("pandoc_html_out") has the same content ("Ok") when I run this...


Have you tried yourself ?
 

kagorec

Client
Регистрация
24.08.2013
Сообщения
979
Благодарностей
523
Баллы
93
Этот код из моего рабочего шаблона.

Отметьте пункт "Не возвращать значение"

pandoc_markdown_in - переменная содержит контент в формате markdown, который будет обработан кубиком C#
pandoc_html_out - переменная будет содержать (html) результат обработки markdown->html кубиком C#
 
Последнее редактирование:

bad robot

Client
Регистрация
07.03.2011
Сообщения
203
Благодарностей
51
Баллы
28
Покачто есть решение через стороннее приложение.

Pandoc.org - приложение для конвертации контента. Например есть также конвертация HTML <--> MARKDOWN.
MARKDOWN разметка хороша поскольку после конвертации html получается с коректным закрытыми тегами.

Подключить к Zennoposter
C#:
// code v1 - https://zennolab.com/discussion/threads/transforming-html-to-markdown-best-methods.116581/ thank you @Pierre Paul Jacques
// code v2 - https://zennolab.com/discussion/threads/dannye-obrabotka-teksta-markdown.115933/

string htmlContent = project.Variables["pandoc_html_in"].Value;

// Replace 'variable' with your actual output variable name where Markdown will be stored
string markdownOutputVariable = "pandoc_markdown_out";

// Path to Pandoc executable; adjust it according to your system
string pandocPath = @"C:\Program Files\Pandoc\pandoc.exe";

string GenerateRandomString(int length)
{
    const string characters = "abcdefghijklmnopqrstuvwxyz0123456789";
    var random = new Random();
    var sb = new StringBuilder();
    for (int i = 0; i < length; i++)
    {
        sb.Append(characters[random.Next(characters.Length)]);
    }
    return sb.ToString();
}

string tempHtml = GenerateRandomString(7);
string tempMarkdown = GenerateRandomString(9);

string tempHtmlPath = @"T:\pandoc\" + tempHtml + ".html";
string tempMarkdownPath = @"T:\pandoc\" + tempMarkdown + ".md";

try
{
    System.IO.File.WriteAllText(tempHtmlPath, htmlContent);

    //var processInfo = new System.Diagnostics.ProcessStartInfo(pandocPath, $"-f html -t markdown_strict+pipe_tables {tempHtmlPath} -o {tempMarkdownPath}")
    var processInfo = new System.Diagnostics.ProcessStartInfo(pandocPath, $"-f html -t commonmark_x+pipe_tables {tempHtmlPath} -o {tempMarkdownPath}")
    
    {
        CreateNoWindow = true,
        UseShellExecute = false,
        RedirectStandardOutput = true,
        RedirectStandardError = true
    };

    using (var process = System.Diagnostics.Process.Start(processInfo))
    {
        process.WaitForExit();
    }

    string markdownContent = System.IO.File.ReadAllText(tempMarkdownPath);
    project.Variables[markdownOutputVariable].Value = markdownContent;
}
catch (Exception ex)
{
    project.SendInfoToLog("Error during Pandoc execution: " + ex.Message);
}
finally
{
    System.IO.File.Delete(tempHtmlPath);
    System.IO.File.Delete(tempMarkdownPath);
}
к сожалению не справляется: не умеет работать с таблицами, оставляет мусорные теги и зачем-то расставляет ненужные переносы строк. Это лимиты Pandoc или есть вариант допилить?
 

kagorec

Client
Регистрация
24.08.2013
Сообщения
979
Благодарностей
523
Баллы
93
https://pandoc.org/MANUAL.html - проверять надо справке предоставленные решения

п.с. с малыми таблицами хорошо справляется ранее предоставленый C# снипет
 

indigo666

Client
Регистрация
10.05.2014
Сообщения
1 154
Благодарностей
374
Баллы
83
Один из примеров: весь текст с оформленными тегами списков, ссылок, параграфов, картинок в формате markdown можно перевести полностью в переводчике translate google без опасения что побьет теги
А что без markdown нельзя? )

Если прям очень надо и срочно надо, есть готовые библиотеки на php.

Но переводы можно спокойно и с html сделать так, чтоб теги не переводились ) Ко всему свой подход.
 

kagorec

Client
Регистрация
24.08.2013
Сообщения
979
Благодарностей
523
Баллы
93
А что без markdown нельзя? )

Если прям очень надо и срочно надо, есть готовые библиотеки на php.

Но переводы можно спокойно и с html сделать так, чтоб теги не переводились ) Ко всему свой подход.
При переводе текста с html разметкой в translate.google.com не все так гладко как кажется.
С тегами бывали проблемы особенно теги ссылок и картинок, лишние пробелы, бывало что теги и кавычки ломались.

В данной теме описание где еще markdown полезен кроме переводчика
 
Последнее редактирование:

indigo666

Client
Регистрация
10.05.2014
Сообщения
1 154
Благодарностей
374
Баллы
83
При переводе текста с html разметкой в translate.google.com не все так гладко как кажется.
С тегами бывали проблемы особенно теги ссылок и картинок, лишние пробелы, бывало что теги и кавычки ломались.

В данной теме описание где еще markdown полезен кроме переводчика
Насколько я помню, markdown не все теги и атрибуты поддерживает и будут потери при таком подходе.

На счет проблемы знаю. Эту проблему я решил на php, без зенки. Хотя то же самое можно сделать и на шарпе. Просто в шарпе не шарю особо )
 

kagorec

Client
Регистрация
24.08.2013
Сообщения
979
Благодарностей
523
Баллы
93
Насколько я помню, markdown не все теги и атрибуты поддерживает и будут потери при таком подходе.

На счет проблемы знаю. Эту проблему я решил на php, без зенки. Хотя то же самое можно сделать и на шарпе. Просто в шарпе не шарю особо )
Для html разметки в статье стили и прочие уникальные `data-...` атрибуты ктото использует?)
С обычными тегами для оформления статей покачто не было проблем (кроме замудренных таблиц где ячейки соеденены на строке и тд)

есть готовые библиотеки на php.
Интересует, напиши название библиотеки или ссылку
 

indigo666

Client
Регистрация
10.05.2014
Сообщения
1 154
Благодарностей
374
Баллы
83
Для html разметки в статье стили и прочие уникальные `data-...` атрибуты ктото использует?)
Не поверишь, но да.



Интересует, напиши название библиотеки или ссылку
 

Germango

Client
Регистрация
30.07.2013
Сообщения
37
Благодарностей
26
Баллы
18
Спасибо за рабочий код.
Правда пару часов голову ломал почему генерация не получается. Оказалось нужно было просто добавить переносы строк в исходные данные. Т.е. если в переменную pandoc_markdown_in отправить подобное значение
C#:
##  Заголовок\n\nТекст текст текст
- то ничего не получится.

Если же предварительно преобразовать в такой формат -
C#:
##  Заголовок

Текст текст текст
то все ок, разметка робит. Может кому пригодится.
 
  • Спасибо
Реакции: kagorec

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)