summaryrefslogtreecommitdiff
path: root/doc/plugins/contrib/unixrelpagespec.mdwn
blob: a35f76c30621e427583938280b87b20ee73973fb (plain)

[[!template id=plugin name=unixrelpagespec core=0 author="[[Jogo]]"]]

I don't understand why ./* correspond to siblings and not subpages. This is probably only meaningfull with [[plugins/autoindex]] turned on.

Here is a small plugin wich follow usual Unix convention :

  • ./* expand to subpages
  • ../* expand to siblings

#!/usr/bin/perl
# UnixRelPageSpec plugin.
# by Joseph Boudou <jogo at matabio dot net>

package IkiWiki::Plugin::unixrelpagespec;

use warnings;
use strict;
use IkiWiki 3.00;

sub import {
    inject(
        name => 'IkiWiki::PageSpec::derel',
        call => \&unix_derel
    );
}

sub unix_derel ($$) {
    my $path = shift;
    my $from = shift;

    if ($path =~ m!^\.{1,2}/!) {
        $from =~ s#/?[^/]+$## if (defined $from and $path =~ m/^\.{2}/);
        $path =~ s#^\.{1,2}/##;
        $path = "$from/$path" if length $from;
    }

    return $path;
}

1;