return $ld;
}
-function ns($file) {
+function ns($path) {
+ $ns = "";
+ $parts = explode("/", $path);
+ $upper = ctype_upper($path[0]);
+ for ($i = 0; $i < count($parts); ++$i) {
+ if (!strlen($parts[$i]) || $parts[$i] === ".") {
+ continue;
+ }
+ if (strlen($ns)) {
+ if ($upper && !ctype_upper($parts[$i][0])) {
+ $ns .= "::";
+ } else {
+ $ns .= "\\";
+ }
+ }
+ $ns .= $parts[$i];
+ $upper = ctype_upper($parts[$i][0]);
+ }
+ return $ns;
return str_replace("/", "\\", str_replace("//", "/", trim($file, "/.")));
}
if (!isset($pi["extension"]) || $pi["extension"] != "md") {
continue;
}
- if (!is_dir("$dir/".$pi["filename"])) {
+ /* ignore files where an accompanying directory exists */
+ if (is_dir("$dir/".$pi["filename"])) {
continue;
}
} else {
- /* ignore directories where an companying file exists */
- if (is_file("$path.md")) {
+ /* ignore directories where no accompanying file exists */
+ if (!is_file("$path.md")) {
continue;
}
}
return;
}
if (!ctype_upper($pi["filename"][0])) {
- return;
- }
- $dir = $pi["dirname"] . "/" . $pi["filename"];
- if (is_dir($dir)) {
- printf("<h2>Methods:</h2>\n");
- printf("<ul>\n");
- foreach (scandir($dir) as $file) {
- if (!is_file("$dir/$file") || ctype_upper($file{0})) {
- continue;
+ // namespaced functions
+ $dir = $pi["dirname"] . "/" . $pi["filename"];
+ if (is_dir($dir)) {
+ printf("<h2>Functions:</h2>\n");
+ printf("<ul>\n");
+ foreach (scandir($dir) as $file) {
+ if ($file{0} === "." || !is_file("$dir/$file") || ctype_upper($file{0})) {
+ continue;
+ }
+ printf("<li><h3><a href=\"/%s\">%s</a></h3><p>%s</p><p>%s</p></li>\n",
+ urlpath($dir, $file),
+ basename($file, ".md"),
+ @end(head("$dir/$file", 3)),
+ join(" ", cut(head("$dir/$file"), ["f"=>"1-"]))
+ );
}
- printf("<li><h3><a href=\"/%s\">%s</a></h3><p>%s</p><p>%s</p></li>\n",
- urlpath($dir, $file),
- basename($file, ".md"),
- @end(head("$dir/$file", 3)),
- join(" ", cut(head("$dir/$file"), ["f"=>"1-"]))
- );
+ printf("</ul>\n");
+ }
+ } else {
+ // methods
+ $dir = $pi["dirname"] . "/" . $pi["filename"];
+ if (is_dir($dir)) {
+ printf("<h2>Methods:</h2>\n");
+ printf("<ul>\n");
+ foreach (scandir($dir) as $file) {
+ if ($file{0} === "." || !is_file("$dir/$file") || ctype_upper($file{0})) {
+ continue;
+ }
+ printf("<li><h3><a href=\"/%s\">%s</a></h3><p>%s</p><p>%s</p></li>\n",
+ urlpath($dir, $file),
+ basename($file, ".md"),
+ @end(head("$dir/$file", 3)),
+ join(" ", cut(head("$dir/$file"), ["f"=>"1-"]))
+ );
+ }
+ printf("</ul>\n");
}
- printf("</ul>\n");
}
}
-function md($file) {
+function md($file, $res) {
$file = rtrim($file, "/");
if (is_file($file) || is_file($file .= ".md")) {
$pi = pathinfo($file);
case "md":
$r = fopen($file, "r");
$md = MarkdownDocument::createFromStream($r);
- $md->compile(MarkdownDocument::AUTOLINK);
+ $md->compile(MarkdownDocument::AUTOLINK|MarkdownDocument::TOC);
print str_replace("<br/>","<br />",$md->getHtml());
fclose($r);
ml($file);
break;
}
} else {
- http\Env::setResponseCode(404);
+ $res->setResponseCode(404);
printf("<h1>Not Found</h1>\n");
printf("<blockquote><p>Sorry, I could not find <code>%s/%s</code>.</p></blockquote>", dirname($file), basename($file, ".md"));
}
}
-function index($pn) {
- ?>
- <?php
-}
-
chdir($_SERVER["DOCUMENT_ROOT"]);
$t = ["css"=>"text/css", "js"=>"application/javascript"];
$r = new http\Env\Request;
ob_end_flush();
?></pre>
<?php else: ?>
- <?php if (!md($p)): ?>
+ <?php if (!md($p, $s)): ?>
<?php endif; ?>
<?php endif; ?>
<footer>