]> sipb.mit.edu Git - ikiwiki.git/blobdiff - IkiWiki.pm
some stylesheet improvements for the table, also add a bit more border
[ikiwiki.git] / IkiWiki.pm
index f8c1f9d3e544ba3386661e5c804237d6577fc186..d8b2721250e924472d94d72dcc0c88e10dedbbbc 100644 (file)
@@ -6,6 +6,10 @@ use strict;
 use Encode;
 use open qw{:utf8 :std};
 
+# Optimisation.
+use Memoize;
+memoize("abs2rel");
+
 use vars qw{%config %links %oldlinks %oldpagemtime %pagectime
             %renderedfiles %pagesources %depends %hooks};
 
@@ -16,7 +20,7 @@ sub defaultconfig () { #{{{
        wiki_file_regexp => qr/(^[-[:alnum:]_.:\/+]+$)/,
        verbose => 0,
        wikiname => "wiki",
-       default_pageext => ".mdwn",
+       default_pageext => "mdwn",
        cgi => 0,
        rcs => 'svn',
        notify => 0,
@@ -260,6 +264,19 @@ sub styleurl (;$) { #{{{
        return $page."style.css";
 } #}}}
 
+sub abs2rel ($$) {
+       # Work around very innefficient behavior in File::Spec if abs2rel
+       # is passed two relative paths. It's much faster if paths are
+       # absolute!
+       my $path="/".shift;
+       my $base="/".shift;
+
+       require File::Spec;
+       my $ret=File::Spec->abs2rel($path, $base);
+       $ret=~s/^// if defined $ret;
+       return $ret;
+}
+
 sub htmllink ($$$;$$$) { #{{{
        my $lpage=shift; # the page doing the linking
        my $page=shift; # the page that will contain the link (different for inline)
@@ -292,8 +309,7 @@ sub htmllink ($$$;$$$) { #{{{
                        "\">?</a>$linktext</span>"
        }
        
-       require File::Spec;
-       $bestlink=File::Spec->abs2rel($bestlink, dirname($page));
+       $bestlink=abs2rel($bestlink, dirname($page));
        
        if (! $noimageinline && isinlinableimage($bestlink)) {
                return "<img src=\"$bestlink\" alt=\"$linktext\" />";