$value) { switch ($spec) { case "d": $delim = $value; break; case "b": $bytes = $value; break; case "f": $fields = $value; break; } } $result = []; if ($bytes) { $func = "substr"; } else { $func = function($a, $o = 0, $l = 0) { return join(" ", array_slice($a, $o, $l ? $l+1 : count($a)-$o)); }; } foreach ($lines as $line) { if ($bytes) { $spec = $bytes; } else { $line = split($delim, $line); $spec = $fields; } if ($spec[0] == "-") { $result[] = $func($line, 0, $spec[1]); } elseif ($spec[1] == "-") { if (empty($spec[2])) { $result[] = $func($line, $spec[0]); } else { $result[] = $func($line, $spec[0], $spec[2]-$spec[0]); } } else { $result[] = $line{$spec[0]}; } } return $result; } function head($file, $lines = 1) { $ld = []; if (is_resource($file) || ($file = fopen($file, "r"))) { while ($lines--) { $ld[] = fgets($file); } } return $ld; } function ns($file) { return str_replace("/", "\\", str_replace("//", "/", trim($file, "/."))); } function urlpath($dir, $file) { return (strlen($dir) ? $dir . "/" : "") . basename($file, ".md"); } function ls($dir) { $dir = rtrim(is_dir($dir) ? $dir : dirname($dir) ."/". basename($dir, ".md"), "/"); printf("\n"); } function ml($file) { $pi = pathinfo($file); if (!isset($pi["extension"])) { return; } if ($pi["extension"] !== "md") { return; } if (!ctype_upper($pi["filename"][0])) { return; } $dir = $pi["dirname"] . "/" . $pi["filename"]; if (is_dir($dir)) { printf("

Methods:

\n"); printf("\n"); } } function md($file) { $file = rtrim($file, "/"); if (is_file($file) || is_file($file .= ".md")) { $pi = pathinfo($file); switch (@$pi["extension"]) { case "md": $r = fopen($file, "r"); $md = MarkdownDocument::createFromStream($r); $md->compile(MarkdownDocument::AUTOLINK); print str_replace("
","
",$md->getHtml()); fclose($r); ml($file); break; case null: printf("

%s

", basename($file)); printf("
%s
\n", htmlspecialchars(file_get_contents($file))); break; } } else { http\Env::setResponseCode(404); printf("

Not Found

\n"); printf("

Sorry, I could not find %s/%s.

", dirname($file), basename($file, ".md")); } } function index($pn) { ?> "text/css", "js"=>"application/javascript"]; $r = new http\Env\Request; $u = new http\Url($r->getRequestUrl()); $s = new http\Env\Response; $p = ".". $u->path; switch($p) { case "./index.php": exit; case "./index.js": case "./index.css": $s->setHeader("Content-type", $t[pathinfo($p, PATHINFO_EXTENSION)]); $s->setBody(new http\Message\Body(fopen($p, "r"))); $s->send(); exit; } ob_start($s); ?> <?=ns($p)?>

Quick Markdown Documentation Browser

v

send();