h:5cm

Markdown

Вселенная из кучки символов

Контекст задачи

В чём вообще проблема? 🤔

  • Вокруг нас много текста
  • Текст важно оформлять
  • Оформлять – долго и сложно…

😱

Но есть и позитивные примеры

Чтобы ваш текст читали, в нём должы быть:

  • Блоки: разделы, абзацы, пустые строки…
  • Пункты: списки, последовательности
  • Акценты (выделения текста)
  • Якори: заметные ссылки, заголовки, значки
☝️ Только если текст достаточно большой

Да запросто!

🕹 Универсальные решения

  • Word/Google Docs
  • OneNote
  • HTML (WYSIWYG)

🔧 Решения под задачу*

  • Outlook
  • Confluence/JIRA
  • ServiceDesk
* На самом деле сводятся к HTML

Решений много, но нет ни одного, которое бы обладало одновременно 3 качествами:
 

  1. Простой синтаксис (или удобный UI к нему)
  2. Независимость от инструмента
  3. Широкая поддержка в экосистеме

и тут такой появляется

Markdown

h:2cm

По задумке автора:

Markdown is a text-to-HTML conversion tool…
allows you to write using an easy-to-read,
easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML).

… the single biggest source of inspiration for Markdown’s syntax is the format of plain text email.

Какой была переписка раньше

> Предлагаю заключить договор с этим партнёром

Отличная идея:) Но очень *важно* успеть этой _осенью_, потому что:
- иначе нас могут опередить конкуренты
- в конце года партнёр будет занят отчётностью
- не хочется рисковать праздниками

Такой формат:

  • Интуитивно понятен
  • Легко применять
  • Не требует специальных инструментов
  • Пригоден для машинного парсинга и генерации

w:30cm

А почему, собственно, именно “Markdown”? 🤔

⚠️ Авторская версия

Допустим, надо получить вот такой текст:

  1. Наклонный пункт
  2. Жирный пункт
  3. Моноширинный пункт
⚠️ Авторская версия

Hyper-Text Markup Language

<p>Допустим, надо получить вот такой текст:</p>
<ol>
  <li><em>Наклонный</em> пункт</li>
  <li><strong>Жирный</strong> пункт</li>
  <li><code>Моноширинный</code> пункт</li>
</ol>
⚠️ Авторская версия

Markdown

Допустим, надо получить вот такой текст:

1. *Наклонный* пункт
1. **Жирный** пункт
1. `Моноширинный` пункт
⚠️ Авторская версия

😉

Но это лишь синтаксис.

А где спецификация? 🤔

Изначально Markdown – скрипт на Perl

# ...
$addr =~ s{(.)}{
	my $char = $1;
	if ( $char eq '@' ) {
	    # this *must* be encoded. I insist.
	    $char = $encode[int rand 1]->($char);
	} elsif ( $char ne ':' ) {
# ...	
3700+ LoC 😱

Так было в 2004-ом.

К 2020-ому стало лучше.

  • Есть спецификация https://commonmark.org/

  • Есть реализации под кучу языков и платформ

  • Есть даже книга 👉

Но путь был тернистым…

  • 10 лет каждый пилил парсеры под себя
  • Спефикация уточнялась на ходу
  • Единой экосистемы не было (и нет)

Наверно, он бы уже сдох

Если бы не

  • Открытость формата
  • Простота парсинга
  • Встроенный “fallback” к тексту
  • Совместимость с HTML

Эти качества обеспечили формату широчайшие…

Применения Markdown

Source Code Platforms

Instant Messaging

Instant Messaging

Instant Messaging

Text Processing

Knowledge Management

Static Site Generation

Presentations & Slides

Знаешь свой уникальный пример?

Расскажи! 🙂

Вместо заключения

  • Помни о преимуществах текста ☝️
  • Стремись к унификации формата 🔮
  • Если есть выбор, выбирай Markdown 🍸

Спасибо за внимание! 🤗

Вопросы?

Можно упомянуть Notepad++