diff options
Diffstat (limited to 'doc/plugins/contrib/siterel2pagerel.mdwn')
-rw-r--r-- | doc/plugins/contrib/siterel2pagerel.mdwn | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/doc/plugins/contrib/siterel2pagerel.mdwn b/doc/plugins/contrib/siterel2pagerel.mdwn new file mode 100644 index 000000000..9b09657bf --- /dev/null +++ b/doc/plugins/contrib/siterel2pagerel.mdwn @@ -0,0 +1,30 @@ +[[!template id=plugin name=siterel2pagerel author="[[PaulWise]]"]] + +This is a simple plugin to convert all site-relative links to page-relative +links (converts /foo into ../../../foo or similar). It works as a +postprocessing filter, allowing it to work on mdwn, wiki, html, rst and any +other format that produces html. The code is available here: + + #!/usr/bin/perl + # quick HTML siterel2pagerel link hack by Paul Wise + package IkiWiki::Plugin::siterel2pagerel; + + use warnings; + use strict; + use IkiWiki 2.00; + + sub import { + hook(type => "sanitize", id => "siterel2pagerel", call => \&siterel2pagerel); + } + + sub siterel2pagerel (@) { + my %params=@_; + my $baseurl=IkiWiki::baseurl($params{page}); + my $content=$params{content}; + $content=~s/(<a(?:\s+(?:class|id)\s*="?\w+"?)?)\s+href=\s*"\/([^"]*)"/$1 href="$baseurl$2"/mig; + $content=~s/(<img(?:\s+(?:class|id|width|height)\s*="?\w+"?)*)\s+src=\s*"\/([^"]*)"/$1 src="$baseurl$2"/mig; + # FIXME: do <script and everything else that can have URLs in it + return $content; + } + + 1 |