| Kwiki-EscapeURI documentation | Contained in the Kwiki-EscapeURI distribution. |
Kwiki::EscapeURI - uri escape to raw UTF8 links
$ cd /path/to/kwiki $ kwiki -add Kwiki::EscapeURI
Changes the internal links that Kwiki create. Instead of raw UTF8 links, it will just be uri escaped.
Kzuhiro Osawa
Copyright (c) 2006. Kazuhiro Osawa All rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Kwiki-EscapeURI documentation | Contained in the Kwiki-EscapeURI distribution. |
package Kwiki::EscapeURI; use strict; use warnings; use Kwiki::Plugin -Base; use mixin 'Kwiki::Installer'; use URI::Escape qw(uri_escape_utf8); our $VERSION = '0.02'; const class_id => 'escape_uri'; const class_title => "uri escape to raw UTF8 links"; sub init { super; my $formatter = $self->hub->load_class('formatter'); $formatter->table->{forced} = 'Kwiki::EscapeURI::ForcedLink'; } sub register { my $registry = shift; $registry->add(preload => 'escape_uri'); $registry->add(hook => 'page:kwiki_link', pre => 'uri_hook'); } sub uri_hook { my $hook = pop; $hook->code(undef); my ($label) = @_; my $page_uri = uri_escape_utf8($self->uri); $label = $self->title unless defined $label; my $class = $self->active ? '' : ' class="empty"'; qq(<a href="?$page_uri"$class>$label</a>); } package Kwiki::EscapeURI::ForcedLink; use base 'Kwiki::Formatter::ForcedLink'; use URI::Escape qw(uri_escape_utf8); sub html { $self->matched =~ $self->pattern_start; my $target = $1; my $page_uri = uri_escape_utf8($target); my $class = $self->hub->pages->new_from_name($target)->exists ? '' : ' class="empty"'; my $text = $self->escape_html($target); return qq(<a href="?$page_uri"$class>$text</a>); } package Kwiki::EscapeURI; __DATA__