Przez moment szukałem w głowie odpowiedniego przymiotnika, którym chciałbym opisać bohatera dzisiejszego krótkiego wpisu. Myślę, że wygodny będzie całkiem dobrym określeniem choć Markdown jest zarówno wydajny jak i intuicyjny.
Czym w ogóle jest Markdown? Jest to język znaczników, służący do formatowania tekstu, wymyślony przez Johna Grubera i Aarona Schwartza w roku 2004. Jak już wcześniej wspomniałem, od innych dostępnych rozwiązań takich jak BBCode czy czysty kod HTML odróżniają go między innymi szybkość użycia i intuicyjność. Składnia Markdown zaprojektowana jest w taki sposób, że nawet patrząc na jeszcze nieprzetworzony kod widzimy przeznaczenie każdego znacznika. Już podaję przykład:
Nagłówek pierwszego stopnia
===========================
Podrozdział
-----------
Poszczególne akapity są od siebie oddzielone pustą linią, tak więc
w obrębie jednego paragrafu swobodnie możemy korzystać z
klawisza enter.
Równie intuicyjne jest też wyróżnianie tekstu: czy to poprzez *emfazę*,
czy **pogrubienie**.
Lista nienumerowana
- kurczaki
- ziemniaki
- psychotropy
Oraz lista ponumerowana:
1 kurczaki
2 ziemniaki
3 psychotropy
Taki kod Markdown zostanie sparsowany (parsery dostępne są dla większości języków) do następującego kodu HTML:
<h1>Nagłówek pierwszego stopnia</h1>
<h2>Podrozdział</h2>
<p>Poszczególne akapity są od siebie oddzielone pustą linią, tak więc
w obrębie jednego paragrafu swobodnie możemy korzystać z
klawisza enter.</p>
<p>Równie intuicyjne jest też wyróżnianie tekstu: czy to poprzez <em>emfazę</em>.
czy <strong>pogrubienie</strong>.</p>
<p>Lista nienumerowana</p>
<ul>
<li>kurczaki</li>
<li>ziemniaki</li>
<li>psychotropy</li>
</u>
<p>Oraz lista ponumerowana:</p>
<ol>
<li>kurczaki</li>
<li>ziemniaki</li>
<li>psychotropy</li>
</ol>
Jest to oczywiście pokaz tylko części możliwości Markdown. Chodziło m raczej o zademonstrowanie samej koncepcji i przejrzystości składni. Jak widać, dzięki użytej budowie, artykuły można spokojnie pisać w dowolnym edytorze tekstowym i nadal pozostaje to czytelne.
Poza to, co pokazano wyżej, składnia Markdown oferuje jeszcze między innymi: odnośniki, obrazki, przełamania linii wewnątrz akapitów, umieszczanie bloków kodu, czy cytaty. Istnieje też alternatywna składnia dla kilku z pokazanych już zastosowań - w standardzie dostarczono m.in. dwa sposoby oznaczania nagłówków, emfaz i pogrubień, które można stosować wymiennie w obrębie jednego dokumentu. Nic nie stoi też na przeszkodzie aby np. umieścić element listy składający się z kilku akapitów -nie chciałem po prostu opisywać tutaj całej składni, bo to już dobrze zrobił sam autor.
Ponadto, dla PHP (oryginalny preprocesor został napisany w Perlu) istnieje parser Markdown w wersji Extra, który oferuje nam takie rzeczy jak listy definicji, przypisy, tabele, czy poprawiony sposób umieszczania kodów źródłowych w tekście. Tutaj należy wspomnieć o jednym założeniu poczynionym na samym początku przez Grubera - Markdown nie ma stać się składnią alternatywną dla HTML. Ma być jedynie wygodną warstwą abstrakcji, która faktycznie ułatwi nam najczęściej stosowane formatowania tekstu.
Jako potwierdzenie powyższych zalet wystarczy zobaczyć jak wiele języków obecnie dostarcza biblioteki do obsługi tej składni i jak wiele oprogramowania pozwala z niej korzystać, czy to jako natywny sposób formatowania, czy jako rozmaite modyfikacje. Znajdziemy więc między innymi rozszerzenie do Thunderbirda, które pozwala nam pisać maile w ten sposób, a potem konwertuje je do HTML-a, a także wtyczkę do Wordpressa (przyznaję, że sam chętnie przerzuciłbym się właśnie na Markdowna, gdyby nie duża ilość treści do przekonwertowania).
Markdown jest też jednym ze sposobów formatowania treści dostarczanym natywnie przez takie usługi jak Github, BitBucket, Jekyll, a także rozmaite systemy CMS.
Tak więc Markdown kryje pod swoją nazwą dwie rzeczy: standard opisu informacji, czyli zaprezentowany i opisany wyżej język znaczników, a także pierwotny parser napisany przez Grubera w Perlu. Niezależnie od czy tworzycie jakąś nową aplikację w języku, który ma bibliotekę do parsowania Markdowna albo pracujecie z programem, który umożliwia jego użycie , jeżeli przewidujecie dużą ilość pracy z prostym tekstem, polecam spróbować tego rozwiązania - praca po chwili staje się naprawdę przyjemna i szybka.
Na sam koniec dwa konkretne linki dla osób, które zainteresował temat: oryginalna strona projetu gdzie w pełni opisano dostępną w standardzie składnię oraz stronę klasy Markdown.php.