]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki.pm
Added a comment
[git.ikiwiki.info.git] / IkiWiki.pm
index 1c05a7aa55215d638400831066b1ee17496b15b9..bc56501dab4f733ca34adbb4e88dcce66e6c102e 100644 (file)
@@ -237,8 +237,8 @@ sub getsetup () {
        html5 => {
                type => "boolean",
                default => 0,
-               description => "generate HTML5? (experimental)",
-               advanced => 1,
+               description => "generate HTML5?",
+               advanced => 0,
                safe => 1,
                rebuild => 1,
        },
@@ -305,9 +305,9 @@ sub getsetup () {
                rebuild => 0,
        },
        umask => {
-               type => "integer",
-               example => "022",
-               description => "force ikiwiki to use a particular umask",
+               type => "string",
+               example => "public",
+               description => "force ikiwiki to use a particular umask (keywords public, group or private, or a number)",
                advanced => 1,
                safe => 0, # paranoia
                rebuild => 0,
@@ -485,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,
@@ -505,7 +505,6 @@ sub defaultconfig () {
        foreach my $key (keys %s) {
                push @ret, $key, $s{$key}->{default};
        }
-       use Data::Dumper;
        return @ret;
 }
 
@@ -588,7 +587,23 @@ sub checkconfig () {
                unless exists $config{wikistatedir} && defined $config{wikistatedir};
 
        if (defined $config{umask}) {
-               umask(possibly_foolish_untaint($config{umask}));
+               my $u = possibly_foolish_untaint($config{umask});
+
+               if ($u =~ m/^\d+$/) {
+                       umask($u);
+               }
+               elsif ($u eq 'private') {
+                       umask(077);
+               }
+               elsif ($u eq 'group') {
+                       umask(027);
+               }
+               elsif ($u eq 'public') {
+                       umask(022);
+               }
+               else {
+                       error(sprintf(gettext("unsupported umask setting %s"), $u));
+               }
        }
 
        run_hooks(checkconfig => sub { shift->() });
@@ -1027,7 +1042,7 @@ sub bestlink ($$) {
 sub isinlinableimage ($) {
        my $file=shift;
        
-       return $file =~ /\.(png|gif|jpg|jpeg)$/i;
+       return $file =~ /\.(png|gif|jpg|jpeg|svg)$/i;
 }
 
 sub pagetitle ($;$) {
@@ -1238,7 +1253,7 @@ sub htmllink ($$$;@) {
                                $cgilink = "<a href=\"".
                                        cgiurl(
                                                do => "create",
-                                               page => lc($link),
+                                               page => $link,
                                                from => $lpage
                                        )."\" rel=\"nofollow\">?</a>";
                        }
@@ -1393,10 +1408,15 @@ sub preprocess ($$$;$$) {
                                |
                                        "([^"]*?)"      # 3: single-quoted value
                                |
-                                       (\S+)           # 4: unquoted value
+                                       '''(.*?)'''     # 4: triple-single-quote
+                               |
+                                       <<([a-zA-Z]+)\n # 5: heredoc start
+                                       (.*?)\n\5       # 6: heredoc value
+                               |
+                                       (\S+)           # 7: unquoted value
                                )
                                (?:\s+|$)               # delimiter to next param
-                       }sgx) {
+                       }msgx) {
                                my $key=$1;
                                my $val;
                                if (defined $2) {
@@ -1411,6 +1431,12 @@ sub preprocess ($$$;$$) {
                                elsif (defined $4) {
                                        $val=$4;
                                }
+                               elsif (defined $7) {
+                                       $val=$7;
+                               }
+                               elsif (defined $6) {
+                                       $val=$6;
+                               }
 
                                if (defined $key) {
                                        push @params, $key, $val;
@@ -1479,6 +1505,11 @@ sub preprocess ($$$;$$) {
                                                |
                                                "[^"]*?"        # single-quoted value
                                                |
+                                               '''.*?'''       # triple-single-quote
+                                               |
+                                               <<([a-zA-Z]+)\n # 5: heredoc start
+                                               (?:.*?)\n\5     # heredoc value
+                                               |
                                                [^"\s\]]+       # unquoted value
                                        )
                                        \s*                     # whitespace or end
@@ -1502,6 +1533,11 @@ sub preprocess ($$$;$$) {
                                                |
                                                "[^"]*?"        # single-quoted value
                                                |
+                                               '''.*?'''       # triple-single-quote
+                                               |
+                                               <<([a-zA-Z]+)\n # 5: heredoc start
+                                               (?:.*?)\n\5     # heredoc value
+                                               |
                                                [^"\s\]]+       # unquoted value
                                        )
                                        \s*                     # whitespace or end
@@ -2611,8 +2647,14 @@ sub match_link ($$;@) {
 }
 
 sub match_backlink ($$;@) {
-       my $ret=match_link($_[1], $_[0], @_);
-       $ret->influences($_[1] => $IkiWiki::DEPEND_LINKS);
+       my $page=shift;
+       my $testpage=shift;
+       my %params=@_;
+       if ($testpage eq '.') {
+               $testpage = $params{'location'}
+       }
+       my $ret=match_link($testpage, $page, @_);
+       $ret->influences($testpage => $IkiWiki::DEPEND_LINKS);
        return $ret;
 }
 
@@ -2772,6 +2814,7 @@ sub cmp_title {
        IkiWiki::pagetitle(IkiWiki::basename($b))
 }
 
+sub cmp_path { IkiWiki::pagetitle($a) cmp IkiWiki::pagetitle($b) }
 sub cmp_mtime { $IkiWiki::pagemtime{$b} <=> $IkiWiki::pagemtime{$a} }
 sub cmp_age { $IkiWiki::pagectime{$b} <=> $IkiWiki::pagectime{$a} }