Pod-ToDocBook

 view release on metacpan or  search on metacpan

lib/Pod/ToDocBook/DoSequences.pm  view on Meta::CPAN


    if ( $code eq 'I' ) {
        $attr->{para} = $el->{TITLE};

        #diag Dumper $el;
    }
    $el;
}

#process conten of  code
sub on_cdata {
    my ( $self, $el, $text ) = @_;
    return $text unless $el->local_name eq 'code';

    #clean
    $text =~ s/^\w<(.*)>$/$1/;
    $el->{TITLE} = $text;

    #return $text;
    return undef;
}

lib/Pod/ToDocBook/DoSequences.pm  view on Meta::CPAN

        return $self->mk_from_xml(
            qq!<indexterm><primary>$el->{TITLE}</primary></indexterm>!)

    }
    elsif ( $code eq 'Z' ) {
        return $self->mk_characters( $el->{TITLE} );
    }
    elsif ( $code eq 'C' ) {
        ( my $literal = $el->mk_element('literal') )->attrs_by_name->{role} =
          'code';
        $literal->add_content( $self->mk_cdata( $el->{TITLE} ) );
        return $literal;
    }
    elsif ( $code eq 'S' ) {
        my $str = $el->{TITLE};
        $str =~ s/\s(?![^<]*>)/&nbsp;/gx;
        return $self->mk_characters($str);
    }
    elsif ( $code eq 'E' ) {
        my $str = $el->{TITLE};
        if ( $str !~ /\A\w+\z/xms ) {

lib/Pod/ToDocBook/FormatList.pm  view on Meta::CPAN

    my ( $self, $el ) = @_;
    my $lname = $el->local_name;
    my $attr  = $el->attrs_by_name;
    if ( $lname eq 'begin' and $attr->{name} eq 'list' ) {
        $self->{PROCESS}++;
        $el->delete_element;
    }
    $el;
}

=head2 process_format  $cdata name=>table param=><string>

Must retrun array ref to elements

=cut

sub process_format {
    my ( $self, $cdata, %att ) = @_;

    #    my ( $title, $align, $row_titles, @strs ) = split( /\n/, $cdata );
    my $pod_parser = new Pod::ToDocBook::Pod2xml::;
    my $over = $self->mk_element('over');
    my @lines = split( /\n/, $cdata );
    foreach my $line (@lines) {
        # replace - to *
        $line =~ s/^[-+](\s+)/\*$1/;
        #make item element and add to over
        my $item =
          $self->mk_element('item')
          ->add_content( $self->mk_element('title')
              ->add_content(  $pod_parser->get_elements_from_text($line, 'list format')) ); #$self->mk_characters($line) 
     $over->add_content( $item)
    }

lib/Pod/ToDocBook/Pod2xml.pm  view on Meta::CPAN

                #handle L
                if ( $node->cmd_name() eq 'L' ) {
                    my $lattr = $parser->parse_link( $node->raw_text );
                    %{$attr} = %{$lattr};
                }
                $attr->{name} = $node->cmd_name();

                #set content
                $elem->{TITLE}    = $node->raw_text;
                $elem->{LINE_NUM} = $line_num;
                $elem->add_content( $parser->mk_cdata( $node->raw_text ) );
                push @childs, $elem;
            }
        }
    }
    return @childs;
}

sub stack {
    my $self = shift;
    $self->{STACK} = [] unless exists $self->{STACK};

lib/Pod/ToDocBook/Pod2xml.pm  view on Meta::CPAN

            my $open_name  = $current->local_name;
            my $close_name = $elem->local_name;
            die
"Stack error: got unexpected: $elem->{COMMAND} at line: $elem->{LINE_NUM}"
              . ". In stack: $current->{COMMAND} ( from line: $current->{LINE_NUM} )"
              unless $open_name eq $close_name;
        }

        #special handle format tag
        if ( $current->local_name eq 'begin' ) {
            if ( my $cdata = delete $current->{TEXT_BLOCK} ) {
                $current->add_content( $self->mk_cdata($cdata) );
            }
        }
        $self->_process($current);
    }

}

sub command {
    my ( $parser, $command, $paragraph, $line_num ) = @_;
    my $self = $parser;

lib/Pod/ToDocBook/Pod2xml.pm  view on Meta::CPAN

    # =end
    if ( $command =~ /^begin|for$/ ) {
        $elem = $parser->mk_element('begin');
        my $attr = $elem->attrs_by_name;
        my ( $format_name, $format_params ) =
          $paragraph =~ m/\s*(\w+)(?:\s+?(.*))?$/gis;
        $attr->{name} = $format_name;
        if ( $command eq 'for' ) {
            my $content = $format_params;
            $format_params = '';
            $elem->add_content( $parser->mk_cdata($content) );
        }
        $attr->{params} = $format_params;
        $self->_start_elem($elem);
        if ( $command eq 'for' ) {
            $self->command( 'end', $format_name, $line_num );
        }
    }
    elsif ( $command eq 'end' ) {
        $elem->local_name('begin');
        $self->_stop_elem($elem);

lib/Pod/ToDocBook/Pod2xml.pm  view on Meta::CPAN

}

sub verbatim {
    my ( $parser, $paragraph, $line_num ) = @_;
    if ( $parser->_current && $parser->_current->local_name eq 'begin' ) {
        $parser->_current->{TEXT_BLOCK} .= $paragraph;
        return undef;
    }
    my $elem =
      $parser->mk_element('verbatim')
      ->add_content( $parser->mk_cdata($paragraph) );
    $parser->_process($elem);
}

sub textblock {
    my ( $parser, $paragraph, $line_num ) = @_;
    unless ( $parser->_current && $parser->_current->local_name eq 'begin' ) {
        $paragraph =~ s/\s+$//ms;
    }
    else {
        $parser->_current->{TEXT_BLOCK} .= $paragraph;

lib/Pod/ToDocBook/TableDefault.pm  view on Meta::CPAN

    my ( $self, $el ) = @_;
    my $lname = $el->local_name;
    my $attr  = $el->attrs_by_name;
    if ( $lname eq 'begin' and $attr->{name} eq 'table' and !$attr->{params} ) {
        $self->{PROCESS}++;
        $el->delete_element;
    }
    $el;
}

=head2 process_format  $cdata name=>table param=><string>

Must retrun array ref to elements

=cut

sub process_format {
    my ( $self, $cdata, %att ) = @_;
    my ( $title, $align, $row_titles, @strs ) = split( /\n/, $cdata );
    #create POD2XML instance for parce pod sequences
    my $pod_parser = new Pod::ToDocBook::Pod2xml::;
    my $table =
      $self->mk_element('table')
      ->add_content(
        $self->mk_element('title')->add_content( $pod_parser->get_elements_from_text($title, 'table format') )
      );
    my @alignspec = split( /\s*,\s*/, $align );
    ( my $tgroup = $self->mk_element('tgroup') )->attrs_by_name->{cols} =
      scalar(@alignspec);

lib/Pod/ToDocBook/TableDefault.pm  view on Meta::CPAN

    $table->add_content( $tgroup->add_content( $row, $tbody ) );
    return $table;
}

sub on_end_element {
    my ( $self, $el ) = @_;
    my $lname = $el->local_name;
    if ( $lname eq 'begin' and exists $self->{PROCESS} ) {
        delete $self->{PROCESS};
        my $attr  = $el->attrs_by_name;
        my $cdata = $el->{CDATA};
        delete $el->{CDATA};
        return $self->process_format( $cdata, %$attr );
    }
    $el;
}

sub on_cdata {
    my ( $self, $elem, $cdata ) = @_;
    if ( exists $self->{PROCESS} ) {
        $elem->{CDATA} .= $cdata;
        return undef;
    }
    return $cdata;
}

1;
__END__

=head1 SEE ALSO

XML::ExtOn,  Pod::2::DocBook

=head1 AUTHOR



( run in 0.686 second using v1.01-cache-2.11-cpan-454fe037f31 )