(no commit message)
authorJogo <Jogo@web>
Thu, 6 Aug 2009 17:07:22 +0000 (13:07 -0400)
committerJoey Hess <joey@kitenet.net>
Thu, 6 Aug 2009 17:07:22 +0000 (13:07 -0400)
doc/plugins/contrib/unixrelpagespec.mdwn [new file with mode: 0644]

diff --git a/doc/plugins/contrib/unixrelpagespec.mdwn b/doc/plugins/contrib/unixrelpagespec.mdwn
new file mode 100644 (file)
index 0000000..a35f76c
--- /dev/null
@@ -0,0 +1,42 @@
+[[!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;