$line) { if (substr($line, 0, 2) === "=>") { preg_match("/=> +(.[^ ]+)/", $line, $lnUrl); preg_match("/=> +.[^ ]+ +(.+)/", $line, $lnTitle); $mdSpecial = array("[", "]", "(", ")"); $htmlEntities = array("[", "]", "(", ")"); $lnUrl[1] = str_replace($mdSpecial, $htmlEntities, $lnUrl[1]); if (isset($lnTitle[1])) { $lnTitle[1] = str_replace($mdSpecial, $htmlEntities, $lnTitle[1]); $gmilines[$key] = "[" . $lnTitle[1] . "](" . $lnUrl[1] . ")"; } else { $gmilines[$key] = "[" . $lnUrl[1] . "](" . $lnUrl[1] . ")"; } } } $code = ""; foreach ($gmilines as $line) { $code = $code . "\n" . $line; } // pages/exemple.md > temp/exemple.temp // Exécute le PHP vers du HTML ob_start(); eval("?>" . $code); $contenuPage = ob_get_contents(); ob_end_clean(); // temp/exemple.temp > temp2/exemple.temp2 // Compile le Markdown vers du HTML $Parsedown = new ParsedownExtra; $Parsedown = $Parsedown->setUrlsLinked(false); $Parsedown = $Parsedown->setMarkupEscaped(false); $Parsedown = $Parsedown->setBreaksEnabled(true); $contenuPage = $Parsedown->text($contenuPage); // temp2/exemple.temp2 > exemple.html // Ajoute header et footer au HTML ob_start(); require "inc/debut.php"; if ($pathParts['filename'] === "index") { echo "
"; } else { echo "
"; } echo $contenuPage; if ($pathParts['filename'] === "index") { echo "
"; } else { echo ""; } require "inc/footer.php"; file_put_contents($pathParts['dirname'] . "/" . $pathParts['filename'] . ".html", ob_get_contents()); ob_end_clean(); } // exemple.html > exemple.html.gz // Compresse les fichiers textes statiques HTML & CSS exec('/usr/local/bin/static-compress -c zopfli "' . SITE . '/*.html" "' . SITE . '/*.js" "' . SITE . '/css/*.css"'); } else { exit("Must be run from CLI"); }