[wellwell-devel] [SCM] Interchange wellwell catalog branch, master, updated. fcf5aac72759cc1f554fe3749abcb456d671d238
Stefan Hornburg
racke at rt.icdevgroup.org
Mon Dec 14 08:38:34 UTC 2009
via fcf5aac72759cc1f554fe3749abcb456d671d238 (commit)
from 8988661c695daa882f21fe8ea0caecef684ab7ac (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit fcf5aac72759cc1f554fe3749abcb456d671d238
Author: Stefan Hornburg (Racke) <racke at linuxia.de>
Date: Mon Dec 14 09:37:51 2009 +0100
load_formatter method added
barf on unknown configuration directives
-----------------------------------------------------------------------
Summary of changes and diff:
lib/Vend/Wiki.pm | 67 +++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 61 insertions(+), 6 deletions(-)
diff --git a/lib/Vend/Wiki.pm b/lib/Vend/Wiki.pm
index 5b2f86d..316c56b 100644
--- a/lib/Vend/Wiki.pm
+++ b/lib/Vend/Wiki.pm
@@ -57,13 +57,41 @@ sub new {
$self->{store} = new Wiki::Toolkit::Store::SQLite(dbname => $self->{dbname});
}
- # create Wiki::Toolkit formatter
- require Wiki::Toolkit::Formatter::Default;
- $self->{formatter} = new Wiki::Toolkit::Formatter::Default(node_prefix => '?page=');
+ # create Wiki::Toolkit formatter(s)
+ if ($self->{formatter}) {
+ my @formatters;
+ # single or multiple formatter(s) ?
+ @formatters = keys %{$self->{formatter}};
+
+ if (@formatters > 1) {
+ my (%parms, $fmt);
+
+ for (@formatters) {
+ $fmt = $self->{formatter}->{$_};
+ $self->load_formatter($fmt);
+ $parms{$_} = $fmt->{object};
+ }
+ require Wiki::Toolkit::Formatter::Multiple;
+
+ $self->{formatter_object} = Wiki::Toolkit::Formatter::Multiple->new(%parms);
+ }
+ else {
+ my ($fmt);
+
+ $fmt = $self->{formatter}->{$formatters[0]};
+ $self->load_formatter($fmt);
+ $self->{formatter_object} = $fmt->{object};
+ }
+ }
+ else {
+ require Wiki::Toolkit::Formatter::Default;
+ $self->{formatter_object} = new Wiki::Toolkit::Formatter::Default(node_prefix => '?page=');
+ }
+
# create Wiki::Toolkit object
$self->{object} = new Wiki::Toolkit(store => $self->{store},
- formatter => $self->{formatter});
+ formatter => $self->{formatter_object});
return $self;
}
@@ -222,6 +250,24 @@ sub list_pages {
return @pages;
}
+# load formatter
+sub load_formatter {
+ my ($self, $fmt) = @_;
+
+ eval "require $fmt->{class}";
+ if ($@) {
+ die "Failed to load $fmt->{class}: $@\n";
+ }
+ eval {
+ $fmt->{object} = $fmt->{class}->new (node_prefix => '?page=');
+ };
+ if ($@) {
+ die "Failed to instantiate $fmt->{class}\n";
+ }
+
+ return $fmt->{object};
+}
+
# default ActionMap for wiki
sub action {
my ($path) = @_;
@@ -265,9 +311,18 @@ sub parse_wiki {
# add pointer for our ActionMap
Vend::Config::parse_action('ActionMap', "$value wiki");
}
+ elsif ($param eq 'formatter') {
+ # add to our list of formatters
+ ::logGlobal ("Adding formatter $value.");
+ $C->{$item}->{$name}->{formatter}->{$value} = {class => "Wiki::Toolkit::Formatter::$value"};
+ }
+ elsif ($param eq 'backend' || $param eq 'dbname') {
+ $C->{$item}->{$name}->{$param} = $value;
+ }
+ else {
+ config_error("No code written yet for $param and $value.", $param, $value);
+ }
- $C->{$item}->{$name}->{$param} = $value;
- #config_error("No code written yet for $var and $value.", $var, $value);
return $C->{$item};
}
hooks/post-receive
--
Interchange wellwell catalog
More information about the wellwell-devel
mailing list