]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki.pm
WIP
[ikiwiki.git] / IkiWiki.pm
index 35e64d81568f6c98aedf18af682c77836310fc8b..8136a7c4b67cff3ead2bae127b8020559111e132 100644 (file)
@@ -336,6 +336,14 @@ sub getsetup () {
                safe => 0, # paranoia
                rebuild => 0,
        },
+       timezone => {
+               type => "string", 
+               default => "",
+               example => "US/Eastern",
+               description => "time zone name",
+               safe => 1,
+               rebuild => 1,
+       },
        include => {
                type => "string",
                default => undef,
@@ -477,7 +485,7 @@ sub getsetup () {
        },
        setuptype => {
                type => "internal",
-               default => "Standard",
+               default => "Yaml",
                description => "perl class to use to dump setup file",
                safe => 0,
                rebuild => 0,
@@ -497,7 +505,6 @@ sub defaultconfig () {
        foreach my $key (keys %s) {
                push @ret, $key, $s{$key}->{default};
        }
-       use Data::Dumper;
        return @ret;
 }
 
@@ -529,6 +536,12 @@ sub checkconfig () {
                        $ENV{$val}=$config{ENV}{$val};
                }
        }
+       if (defined $config{timezone} && length $config{timezone}) {
+               $ENV{TZ}=$config{timezone};
+       }
+       else {
+               $config{timezone}=$ENV{TZ};
+       }
 
        if ($config{w3mmode}) {
                eval q{use Cwd q{abs_path}};
@@ -810,17 +823,23 @@ sub srcfile ($;$) {
        return (srcfile_stat(@_))[0];
 }
 
-sub add_underlay ($) {
+sub add_literal_underlay ($) {
        my $dir=shift;
 
-       if ($dir !~ /^\//) {
-               $dir="$config{underlaydirbase}/$dir";
-       }
-
        if (! grep { $_ eq $dir } @{$config{underlaydirs}}) {
                unshift @{$config{underlaydirs}}, $dir;
        }
+}
+
+sub add_underlay ($) {
+       my $dir = shift;
+
+       if ($dir !~ /^\//) {
+               $dir="$config{underlaydirbase}/$dir";
+       }
 
+       add_literal_underlay($dir);
+       # why does it return 1? we just don't know
        return 1;
 }
 
@@ -1162,7 +1181,7 @@ sub urlto ($;$$) {
        }
 
        if (! defined $from) {
-               my $u = $local_url;
+               my $u = $local_url || '';
                $u =~ s{/$}{};
                return $u.beautify_urlpath("/".$to);
        }
@@ -1373,10 +1392,14 @@ sub preprocess ($$$;$$) {
                                |
                                        "([^"]*?)"      # 3: single-quoted value
                                |
-                                       (\S+)           # 4: unquoted value
+                                       '''(.*?)'''     # 4: triple-single-quote
+                               |
+                                       <<(?<start>[a-zA-Z]+)\n(?<heredoc>.*?)\n\k<start> # 5, 6: heredoc'd value.
+                               |
+                                       (\S+)           # 7: unquoted value
                                )
                                (?:\s+|$)               # delimiter to next param
-                       }sgx) {
+                       }msgx) {
                                my $key=$1;
                                my $val;
                                if (defined $2) {
@@ -1391,6 +1414,12 @@ sub preprocess ($$$;$$) {
                                elsif (defined $4) {
                                        $val=$4;
                                }
+                               elsif (defined $7) {
+                                       $val=$7;
+                               }
+                               elsif (defined $+{heredoc}) {
+                                       $val=$+{heredoc};
+                               }
 
                                if (defined $key) {
                                        push @params, $key, $val;
@@ -1459,6 +1488,10 @@ sub preprocess ($$$;$$) {
                                                |
                                                "[^"]*?"        # single-quoted value
                                                |
+                                               <<(?<start>[a-zA-Z]+)\n(?<heredoc>.*?)\n\k<start> # heredoc'd value.
+                                               |
+                                               '''.*?''' # triple-single-quoted value
+                                               |
                                                [^"\s\]]+       # unquoted value
                                        )
                                        \s*                     # whitespace or end
@@ -1482,6 +1515,10 @@ sub preprocess ($$$;$$) {
                                                |
                                                "[^"]*?"        # single-quoted value
                                                |
+                                               '''.*?'''       # triple-single-quoted value
+                                               |
+                                               <<(?<start>[a-zA-Z]+)\n(?<heredoc>.*?)\n\k<start> # heredoc'd value.
+                                               |
                                                [^"\s\]]+       # unquoted value
                                        )
                                        \s*                     # whitespace or end
@@ -1916,39 +1953,6 @@ sub template ($;@) {
        template_depends(shift, undef, @_);
 }
 
-sub misctemplate ($$;@) {
-       my $title=shift;
-       my $content=shift;
-       my %params=@_;
-       
-       my $template=template("page.tmpl");
-
-       my $page="";
-       if (exists $params{page}) {
-               $page=delete $params{page};
-       }
-       run_hooks(pagetemplate => sub {
-               shift->(
-                       page => $page,
-                       destpage => $page,
-                       template => $template,
-               );
-       });
-       templateactions($template, "");
-
-       $template->param(
-               dynamic => 1,
-               title => $title,
-               wikiname => $config{wikiname},
-               content => $content,
-               baseurl => $config{url}.'/',
-               html5 => $config{html5},
-               %params,
-       );
-       
-       return $template->output;
-}
-
 sub templateactions ($$) {
        my $template=shift;
        my $page=shift;