Dnes jsme řešili tvorbu obsahu pomocí Markdown. Existuje poměrně hodně pluginů do všech možných jazyků. Hodně vývojářů se rozhodlo, že si překlad markdown vytvoří úplně sami. Nic proti gustu, ale kolik kol je potřeba vymyslet, aby se mohlo říci, že je nejlepší to kulaté?

Nechali jsme se inspirovat blogem Jekyll. Používá stejný engine jako GitHub k překladu jeho Flovered Markdown.

Implementovali jsme jednoduchý bash script, který převede Markdown do html a postará se o všechny druhy zdrojového kódu. Ten si pak různě obarvíte pomocí css. Výsledek pak vypíše na obrazovku v konzoli. Markdown je zpracován pomocí Redcarpet a o syntax highlighting se postará Pygments.

Markdown je nastaven tak, aby generoval HTML safe výstup. HTML tagy jsou tedy převedeny na entity, aby se předešlo XSS.

Spuštění kompilace:

#!/bin/sh

./bin/markdown --file ./file-to-compile.md

Překlad lze samozřejmě spouštět ze všech různých jazyků. Pokud využíváte ruby, pak require "markdown". Pokud ne, pak je pro vás připraven shell script. V PHP by to například vypadalo takto:

<?php
declare(strict_types = 1);

/**
 * @author Martin Lonsky
 * @param string $cmd
 * @return string
 */
function cmd(string $cmd) : string{
	ob_start();
	
	$_proc = popen($cmd . ' 2>&1', 'r');
	
	while (!feof($_proc)) {
		echo fread($_proc, 4096);
		
		@flush();
	}

	return ob_get_clean();
}

$_tmp    = tempnam("/tmp", 'redcarpet');
$_handle = fopen($_tmp, "w");
fwrite($_handle, trim($data));
fclose($_handle);

$_data = cmd("./Markdown/bin/markdown --file $_tmp");

unlink($_tmp);

Výsledek pak vypadá takto: IMAGE

Stačí stáhnout a používat. Udělejte si to hezké :)

Ke stažení zde. Syntax highlight css je možné použít z tohoto blogu. Je kompatibilní.