NAME
Data::Foswiki - Read and Write Foswiki topics
VERSION
Version 0.02
SYNOPSIS
Quickly read and write Foswiki topics into a hash
use Data::Foswiki;
#read
my $fh;
open($fh, '<', '/var/lib/foswiki/data/System/FAQSimultaneousEdits.txt') or die 'open failure';
my @topic_text = <$fh>;
close($fh);
my $topic = Data::Foswiki::Test2::deserialise(@topic_text);
$topic->{TOPICINFO}{author} = 'NewUser';
$topic->{PARENT}{name} = 'WebHome';
$topic->{TEXT} = "Some new text\n\n".$topic->{TEXT};
undef $topic->{TOPICMOVED};
$topic->{FIELD}{TopicTitle}{attributes} = 'H';
#add a new field that is not part of the form definition - if edited within foswiki, it willbe removed
#but its useful for importing
$topic->{FIELD}{NewField}{value} = 'test';
#write
open($fh, '>', '/var/lib/foswiki/data/System/FAQNewFaq.txt') or die 'write failure';
print $fh Data::Foswiki::Test::serialise($topic);
close($fh);
EXPORT
A list of functions that can be exported. You can delete this section if you don't export anything, such as for a purely object-oriented module.
SUBROUTINES/METHODS
deserialise($text|@stringarray) -> $hash_ref
Parse a string, or array of strings and convert into a hash of the Foswiki topic's data
(apparently Perl can be faster reading a file into an array)
if you pass in an undef / empty string, you will get undef back
serialise($hashref) -> string
Serialise into a foswiki 'embedded' formatted string, ready for writing to disk.
Note: this does not take care of updating the topic revision and date data
AUTHOR
Sven Dowideit, <SvenDowideit at fosiki.com>
BUGS
Please report any bugs or feature requests to bug-data-foswiki at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Data-Foswiki. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
Foswiki support can be found in the #foswiki irc channel on irc://irc.freenode.net, or from SvenDowideit mailto:SvenDowideit@fosiki.com
ACKNOWLEDGEMENTS
TO DO
make an XS version, and try a few different approaches to parsing and then benchmark them this would mean making this module into a facade to the other implementations.
is it faster not to modify the array? (just keep start and end Text indexes?)
LICENSE AND COPYRIGHT
Copyright 2012 Sven Dowideit SvenDowideit@fosiki.com.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.