[cgi-wiki-dev] CGI::Wiki::Formatter::Multiple
Tom Insam
cgi-wiki-dev@earth.li
Mon, 13 Sep 2004 19:29:16 +0100
--Apple-Mail-3-828839529
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
charset=US-ASCII;
format=flowed
attached is a patch against CGI::Wiki::Formatter::Multiple 0.01 that
will pass through the 'find_internal_links' call to the correct
formatter - as far as I can tell, wikis with >1 formatter don't
currently track backlinks..
I've been very confused in writing this by the metadata object that
gets thrown around - sometimes the formatter name is in a listref,
sometimes not. I've tried to handle both cases in this patch, but I'm
very confused. What's _supposed_ to be in the formatter metadata?
tom
--Apple-Mail-3-828839529
Content-Type: multipart/appledouble;
boundary=Apple-Mail-4-828839530
Content-Disposition: attachment
--Apple-Mail-4-828839530
Content-Transfer-Encoding: base64
Content-Type: application/applefile;
name="formatter_multiple.diff"
Content-Disposition: attachment;
filename=formatter_multiple.diff
AAUWBwACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAJAAAAPgAAAAoAAAADAAAASAAAABcAAAACAAAA
XwAABq5URVhUUipjaAAAZm9ybWF0dGVyX211bHRpcGxlLmRpZmYAAAEAAAAGaAAABWgAAABGAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAASAAJTW9uYWNvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgACACwAIgNW
AqIALAAiA1YCor1rpN8AAATwAAAE8AAAAAABAQAABRhSKmNoAIQAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQdDb3VyaWVyAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAACQAAAAQJSGVsdmV0aWNhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADENvbmZp
ZGVudGlhbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAQAAAYAAAACAAAAAgAAAAIAAAAAAAAEBAQAB
AQEAAAAAAgBQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACmlz
by04ODU5LTEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAZoAAAFaAAAAEYAYFCMA/MAAAAcAEYAAU1Q
U1IAAAASQkJTVAAAAB4D7f//AAAAAAB/loQAgP//AAAATAB/log=
--Apple-Mail-4-828839530
Content-Transfer-Encoding: 7bit
Content-Type: application/text;
x-mac-type=54455854;
x-unix-mode=0644;
x-mac-creator=522A6368;
name="formatter_multiple.diff"
Content-Disposition: attachment;
filename=formatter_multiple.diff
diff -ur CGI-Wiki-Formatter-Multiple-0.01/lib/CGI/Wiki/Formatter/Multiple.pm CGI-Wiki-Formatter-Multiple-changed/lib/CGI/Wiki/Formatter/Multiple.pm
--- CGI-Wiki-Formatter-Multiple-0.01/lib/CGI/Wiki/Formatter/Multiple.pm Mon Sep 22 16:09:33 2003
+++ CGI-Wiki-Formatter-Multiple-changed/lib/CGI/Wiki/Formatter/Multiple.pm Sun Sep 12 22:50:08 2004
@@ -96,8 +96,29 @@
sub format {
my ($self, $raw, $wiki, $metadata) = @_;
- my $formatter_label = $metadata->{formatter}[0] || "_DEFAULT";
- return $self->{formatters}{$formatter_label}->format( $raw, $wiki );
+ return $self->_formatter($metadata)->format($raw, $wiki);
+}
+
+=item B<find_internal_links( $raw, $metadata )>
+
+=cut
+
+sub find_internal_links {
+ my ($self, $raw, $metadata) = @_;
+ return () unless $self->_formatter($metadata);
+ return () unless $self->_formatter($metadata)->can("find_internal_links");
+ return $self->_formatter($metadata)->find_internal_links($raw, $metadata);
+}
+
+# internal method to return the correct formatter for the current
+# page.
+
+sub _formatter {
+ my $self = shift;
+ my $metadata = shift;
+ my $label = $metadata->{formatter} || "_DEFAULT";
+ $label = $label->[0] if ref($label);
+ return $self->{formatters}{$label};
}
=back
--Apple-Mail-4-828839530--
--Apple-Mail-3-828839529--