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.