| Socialtext-Resting-Utils documentation | Contained in the Socialtext-Resting-Utils distribution. |
Socialtext::WikiObject::Factory - Create an approprate WikiObject from Magic Tags
# Set a magic tag to define WikiObject subclass
$rester->put_page($page_name, $page_text);
$rester->put_pagetag($page_name, '.wikiobject=YAML');
# Use the factory to create the appropriate class
my $wo = Socialtext::WikiObject::Factory->new(
rester => $rester,
page => $page_name,
);
isa_ok $wo, 'Socialtext::WikiObject::YAML';
Socialtext::WikiObject::Factory reads magic tags on a page, and then creates a WikiObject of the appropriate class, as defined in the magic tag.
Create a new wiki object. Options:
Users must provide a Socialtext::Resting object setup to use the desired workspace and server.
The page to load. Mandatory.
Luke Closs, <luke.closs at socialtext.com>
Please report any bugs or feature requests to http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Socialtext-Resting-Utils. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
Copyright 2007 Luke Closs, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Socialtext-Resting-Utils documentation | Contained in the Socialtext-Resting-Utils distribution. |
package Socialtext::WikiObject::Factory; use strict; use warnings; use Carp qw/croak/;
our $VERSION = '0.01';
sub new { my (undef, %opts) = @_; croak "rester is mandatory!" unless $opts{rester}; croak "page is mandatory!" unless $opts{page}; my $class = 'Socialtext::WikiObject'; my $rester = $opts{rester}; my @tags = $rester->get_pagetags($opts{page}); for my $t (@tags) { if ($t =~ m/^\.wikiobject=(.+)$/) { $class .= '::' . ucfirst($1); last; } } eval "require $class"; die if $@; return $class->new(%opts); }
1;