Merge branch 'master' of https://github.com/jeremyroman/dweb
authorJacob Parker <j3parker@csclub.uwaterloo.ca>
Wed, 7 Mar 2012 00:35:59 +0000 (19:35 -0500)
committerJacob Parker <j3parker@csclub.uwaterloo.ca>
Wed, 7 Mar 2012 00:35:59 +0000 (19:35 -0500)
Conflicts:
src/web.d

1  2 
src/build
src/web.d

diff --cc src/build
+++ b/src/build
@@@ -1,2 -1,2 +1,2 @@@
  cd "$(dirname $0)"
--dmd config.d web.d -ofweb && rm web.o && mv web ../bin/
++dmd web.d config.d -ofweb && rm web.o && mv web ../bin/
diff --cc src/web.d
+++ b/src/web.d
@@@ -3,24 -3,25 +3,24 @@@ import std.stdio, std.path, std.process
  import config;
  
  string dweb_root;
+ string[string] template_variables;
+ string[string] headers;
  
- string indent = "";
- void html(string s) { writeln(indent ~ s); }
- void html_pop(string s) { indent = indent[0..max(0, $-4)]; html(s); }
- void html_push(string s) { html(s); indent ~= "    "; }
- void write_link(string to, bool expand) {
+ string write_link(string to, bool expand) {
    bool isdir = dirExists(dweb_root ~ "/srv/" ~ to[url_root.length..$]);
-   html_push("<li" ~ (expand? " class=\"thisPage\" " : "") ~ ">");
-   html("<a href=\"" ~ to ~ (isdir ? "/" : "") ~ "\">"
-         ~ baseName(to) ~ (isdir ? "/" : "") ~ "</a>");
-   html_pop("</li>");
 -  string flair = nav_tree_chev? (expand? "&raquo; " : "&rsaquo; ") : "";
+   string result = "";
+   result ~= "<li" ~ (expand? " class=\"thisPage\" " : "") ~ ">";
+   result ~= "<a href=\"" ~ to ~ (isdir ? "/" : "") ~ "\">"
 -        ~ flair ~ baseName(to) ~ (isdir ? "/" : "") ~ "</a>";
++            ~ baseName(to) ~ (isdir ? "/" : "") ~ "</a>";
+   result ~= "</li>";
+   return result;
  }
  
- void nav_tree_r(string url, string cur_loc, string[] subdirs) {
+ string nav_tree_r(string url, string cur_loc, string[] subdirs) {
+   string result = "";
    string[] dirs = array(map!"a.name"(dirEntries(dweb_root ~ "/srv/" ~ cur_loc, SpanMode.shallow)));
    sort(dirs);
-   if (dirs.length == 0) return;
+   if (dirs.length == 0) return "";
    bool inserted_ul = false;
    bool next = false;
    string next_loc;
@@@ -89,14 -63,11 +62,11 @@@ string not_found(string path) 
  
  bool dirExists(string path)  { try { if (isDir(path))  return true; else return false; } catch (Exception e) { return false; } }
  
- void do_content(string url) {
-   html_push("<div id=\"main-copy\"" ~ (nav_tree_vert? " class=\"main-copy-side-bar\"" : "")  ~ ">");
+ string do_content(string url) {
    // first, see if we have something that wants to handle url outright
 -  foreach (string glob, string h; handlers) {
 -    if (globMatch(url, glob)) {
 +  foreach (StaticRegex!char reg, string h; handlers) {
 +    if (match(url, reg)) {
-       html(shell(dweb_root ~ "/bin/" ~ h ~ " " ~ url));
-       html_pop("</div>");
-       return;
+       return shell(dweb_root ~ "/bin/" ~ h ~ " " ~ url);
      }
    }
    // if that failed, see if we can handle the file
      if (isDir(f)) continue;
      string name = baseName(f); name = name[0] == '@' ? name[1..$] : name;
      if (stripExtension(name) == baseName(url)) {
 -      foreach (string glob, string h; handlers) { 
 -        if (globMatch(name, glob)) {
 +      foreach (StaticRegex!char reg, string h; handlers) { 
 +        if (match(name, reg)) {
-           html(shell(dweb_root ~ "/bin/" ~ h ~ " " ~ f));
-           html_pop("</div>");
-           return;
+           return shell(dweb_root ~ "/bin/" ~ h ~ " " ~ f);
          }
        }
      }