package Perl6::Pod::To::DocBook;
=head1 NAME
Perl6::Pod::To::DocBook - DocBook formater
=head1 SYNOPSIS
my $p = new Perl6::Pod::To::DocBook::
header => 0, doctype => 'chapter';
=head1 DESCRIPTION
Process pod to docbook
Sample:
=begin pod
=NAME Test chapter
=para This is a test para
=end pod
Run converter:
pod6docbook test.pod > test.xml
Result xml:
Test chapter
This is a test para
=cut
use strict;
use warnings;
use Perl6::Pod::To;
use base 'Perl6::Pod::To';
use Perl6::Pod::Utl;
our $VERSION = '0.01';
sub new {
my $class = shift;
my $self = $class->SUPER::new(@_);
# $self->{doctype} ||= 'chapter';
return $self;
}
sub block_NAME {
my $self = shift;
my $el = shift;
my $w = $self->w;
$w->raw('
');
$el->{content} = Perl6::Pod::Utl::parse_para($el->childs->[0]->{content}->[0]);
$self->visit_childs($el);
$w->raw('');
}
sub start_write {
my $self = shift;
my $w = $self->writer;
if ( $self->{header} ) {
$w->say(
q@@);
}
$self->w->raw_print( '<' . $self->{doctype} . '>' ) if $self->{doctype};
}
sub switch_head_level {
my $self = shift;
my $level = shift;
my $no_start_next_flag = shift;
my $w = $self->w;
my $prev = $self->SUPER::switch_head_level($level);
if ($level && $level == $prev ) {
$w->raw('')
} elsif ( $prev < $level ) {
$w->raw('') for ( 1..$level-$prev);
} else #$prev > $level
{
my $count_to_close = $level * 1 + $prev-$level;
$w->raw('') for ( 1..$count_to_close);
$w->raw('') unless $no_start_next_flag or !$level;
}
}
sub end_write {
my $self = shift;
$self->switch_head_level(0,'no_start_next');
$self->w->raw_print( '' . $self->{doctype} . '>' ) if $self->{doctype};
}
1;
__END__
=head1 SEE ALSO
L
=head1 AUTHOR
Zahatski Aliaksandr,
=head1 COPYRIGHT AND LICENSE
Copyright (C) 2009-2015 by Zahatski Aliaksandr
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.8.8 or,
at your option, any later version of Perl 5 you may have available.
=cut