package Pod::Simple::Wiki::Confluence; ############################################################################### # # Pod::Simple::Wiki::Confluence - A class for creating Pod to Confluence filters. # # # Copyright 2003-2008, John McNamara, jmcnamara@cpan.org # # Documentation after __END__ # use Pod::Simple::Wiki; use strict; use vars qw(@ISA $VERSION); @ISA = qw(Pod::Simple::Wiki); $VERSION = '0.09'; ############################################################################### # # The tag to wiki mappings. # my $tags = { '' => '*', '' => '*', '' => '_', '' => '_', '' => '{{', '' => '}}', '
'  => "{noformat}\n",
            '
' => "\n{noformat}\n", '

' => 'h1. ', '

' => "\n\n", '

' => 'h2. ', '

' => "\n\n", '

' => 'h3. ', '

' => "\n\n", '

' => 'h4. ', '

' => "\n\n", }; ############################################################################### # # new() # # Simple constructor inheriting from Pod::Simple::Wiki. # sub new { my $class = shift; my $self = Pod::Simple::Wiki->new('wiki', @_); $self->{_tags} = $tags; bless $self, $class; return $self; } ############################################################################### # # _indent_item() # # Indents an "over-item" to the correct level. # sub _indent_item { my $self = shift; my $item_type = $_[0]; my $item_param = $_[1]; my $indent_level = $self->{_item_indent}; if ($item_type eq 'bullet') { $self->_append('*' x $indent_level . ' '); } elsif ($item_type eq 'number') { $self->_append('#' x $indent_level . ' '); } # Confluence doesn't have the equivalent of a
list so we use a # bullet list with a bolded "item" as a workaround. elsif ($item_type eq 'text') { $self->_append('*' x $indent_level . ' *'); } } ############################################################################### # # _handle_text() # # Perform any necessary transforms on the text. This is mainly used to escape # inadvertent CamelCase words. # sub _handle_text { my $self = shift; my $text = $_[0]; # Only escape words in paragraphs if (not $self->{_in_Para}) { $self->{_wiki_text} .= $text; return; } # Split the text into tokens but maintain the whitespace my @tokens = split /(\s+)/, $text; # Escape any tokens here, if necessary. # Rejoin the tokens and whitespace. $self->{_wiki_text} .= join '', @tokens; } ############################################################################### # # Functions to deal with =over ... =back regions for # # Bulleted lists # Numbered lists # Text lists # Block lists # sub _end_item_text {$_[0]->_output('* ')} ############################################################################### # # _start_Para() # # Special handling for paragraphs that are part of an "over" block. # sub _start_Para { my $self = shift; my $indent_level = $self->{_item_indent}; if ($self->{_in_over_block}) { $self->_append('bq. '); } } 1; __END__ =head1 NAME Pod::Simple::Wiki::Confluence - A class for creating Pod to Confluence wiki filters. =head1 SYNOPSIS This module isn't used directly. Instead it is called via C: #!/usr/bin/perl -w use strict; use Pod::Simple::Wiki; my $parser = Pod::Simple::Wiki->new('confluence'); ... Convert Pod to a Confluence wiki format using the installed C utility: pod2wiki --style confluence file.pod > file.wiki =head1 DESCRIPTION The C module is used for converting Pod text to Wiki text. Pod (Plain Old Documentation) is a simple markup language used for writing Perl documentation. For an introduction to Confluence see: http://www.atlassian.com/software/confluence/ This module isn't generally invoked directly. Instead it is called via C. See the L and L documentation for more information. =head1 METHODS Pod::Simple::Wiki::Confluence inherits all of the methods of C and C. See L and L for more details. =head1 SEE ALSO This module also installs a C command line utility. See C for details. =head1 ACKNOWLEDGEMENTS Thanks to David Bartle, Andrew Hobbs and Jim Renwick for patches. =head1 DISCLAIMER OF WARRANTY Please refer to the DISCLAIMER OF WARRANTY in L. =head1 AUTHORS John McNamara jmcnamara@cpan.org =head1 COPYRIGHT © MMIII-MMVIII, John McNamara. All Rights Reserved. This module is free software. It may be used, redistributed and/or modified under the same terms as Perl itself.