[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