* Make aggregator save permalinks and author name to pages as metadata.
[ikiwiki.git] / IkiWiki.pm
index d9559bde45936348c51b0965c4da6262f00a3a16..1a5cf52ddea717bf366351e4a79c18460be3006a 100644 (file)
@@ -272,7 +272,9 @@ sub pagetitle ($) { #{{{
 sub titlepage ($) { #{{{
        my $title=shift;
        $title=~y/ /_/;
-       $title=~s/([^-[:alnum:]_:+\/.])/"__".ord($1)."__"/eg;
+       # Note: [:alnum:] is not used here, on purpose; unicode
+       # not allowed in urls.
+       $title=~s/([^-A-Za-z0-9_:+\/.])/"__".ord($1)."__"/eg;
        return $title;
 } #}}}
 
@@ -553,7 +555,7 @@ sub pagespec_translate ($) { #{{{
                elsif ($word eq "(" || $word eq ")" || $word eq "!") {
                        $code.=" ".$word;
                }
-               elsif ($word =~ /^(link|backlink|creation_month|creation_year|creation_day)\((.+)\)$/) {
+               elsif ($word =~ /^(link|backlink|created_before|created_after|creation_month|creation_year|creation_day)\((.+)\)$/) {
                        $code.=" match_$1(\$page, ".safequote($2).")";
                }
                else {
@@ -598,6 +600,30 @@ sub match_backlink ($$) { #{{{
        match_link(pop, pop);
 } #}}}
 
+sub match_created_before ($$) { #{{{
+       my $page=shift;
+       my $testpage=shift;
+
+       if (exists $pagectime{$testpage}) {
+               return $pagectime{$page} < $pagectime{$testpage};
+       }
+       else {
+               return 0;
+       }
+} #}}}
+
+sub match_created_after ($$) { #{{{
+       my $page=shift;
+       my $testpage=shift;
+
+       if (exists $pagectime{$testpage}) {
+               return $pagectime{$page} > $pagectime{$testpage};
+       }
+       else {
+               return 0;
+       }
+} #}}}
+
 sub match_creation_day ($$) { #{{{
        return ((gmtime($pagectime{shift()}))[3] == shift);
 } #}}}