[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 2 # A quite dimwitted pod2plaintext that need only know how to format whatever 3 # text comes out of Pod::BlackBox's _gen_errata 4 5 require 5; 6 package Pod::Simple::Checker; 7 use strict; 8 use Carp (); 9 use Pod::Simple::Methody (); 10 use Pod::Simple (); 11 use vars qw( @ISA $VERSION ); 12 $VERSION = '2.02'; 13 @ISA = ('Pod::Simple::Methody'); 14 BEGIN { *DEBUG = defined(&Pod::Simple::DEBUG) 15 ? \&Pod::Simple::DEBUG 16 : sub() {0} 17 } 18 19 use Text::Wrap 98.112902 (); # was 2001.0131, but I don't think we need that 20 $Text::Wrap::wrap = 'overflow'; 21 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 22 23 sub any_errata_seen { # read-only accessor 24 return $_[1]->{'Errata_seen'}; 25 } 26 27 sub new { 28 my $self = shift; 29 my $new = $self->SUPER::new(@_); 30 $new->{'output_fh'} ||= *STDOUT{IO}; 31 $new->nix_X_codes(1); 32 $new->nbsp_for_S(1); 33 $new->{'Thispara'} = ''; 34 $new->{'Indent'} = 0; 35 $new->{'Indentstring'} = ' '; 36 $new->{'Errata_seen'} = 0; 37 return $new; 38 } 39 40 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 41 42 sub handle_text { $_[0]{'Errata_seen'} and $_[0]{'Thispara'} .= $_[1] } 43 44 sub start_Para { $_[0]{'Thispara'} = '' } 45 46 sub start_head1 { 47 if($_[0]{'Errata_seen'}) { 48 $_[0]{'Thispara'} = ''; 49 } else { 50 if($_[1]{'errata'}) { # start of errata! 51 $_[0]{'Errata_seen'} = 1; 52 $_[0]{'Thispara'} = $_[0]{'source_filename'} ? 53 "$_[0]{'source_filename'} -- " : '' 54 } 55 } 56 } 57 sub start_head2 { $_[0]{'Thispara'} = '' } 58 sub start_head3 { $_[0]{'Thispara'} = '' } 59 sub start_head4 { $_[0]{'Thispara'} = '' } 60 61 sub start_Verbatim { $_[0]{'Thispara'} = '' } 62 sub start_item_bullet { $_[0]{'Thispara'} = '* ' } 63 sub start_item_number { $_[0]{'Thispara'} = "$_[1]{'number'}. " } 64 sub start_item_text { $_[0]{'Thispara'} = '' } 65 66 sub start_over_bullet { ++$_[0]{'Indent'} } 67 sub start_over_number { ++$_[0]{'Indent'} } 68 sub start_over_text { ++$_[0]{'Indent'} } 69 sub start_over_block { ++$_[0]{'Indent'} } 70 71 sub end_over_bullet { --$_[0]{'Indent'} } 72 sub end_over_number { --$_[0]{'Indent'} } 73 sub end_over_text { --$_[0]{'Indent'} } 74 sub end_over_block { --$_[0]{'Indent'} } 75 76 77 # . . . . . Now the actual formatters: 78 79 sub end_head1 { $_[0]->emit_par(-4) } 80 sub end_head2 { $_[0]->emit_par(-3) } 81 sub end_head3 { $_[0]->emit_par(-2) } 82 sub end_head4 { $_[0]->emit_par(-1) } 83 sub end_Para { $_[0]->emit_par( 0) } 84 sub end_item_bullet { $_[0]->emit_par( 0) } 85 sub end_item_number { $_[0]->emit_par( 0) } 86 sub end_item_text { $_[0]->emit_par(-2) } 87 88 sub emit_par { 89 return unless $_[0]{'Errata_seen'}; 90 my($self, $tweak_indent) = splice(@_,0,2); 91 my $indent = ' ' x ( 2 * $self->{'Indent'} + ($tweak_indent||0) ); 92 # Yes, 'STRING' x NEGATIVE gives '', same as 'STRING' x 0 93 94 $self->{'Thispara'} =~ tr{\xAD}{}d if Pod::Simple::ASCII; 95 my $out = Text::Wrap::wrap($indent, $indent, $self->{'Thispara'} .= "\n"); 96 $out =~ tr{\xA0}{ } if Pod::Simple::ASCII; 97 print {$self->{'output_fh'}} $out, 98 #"\n" 99 ; 100 $self->{'Thispara'} = ''; 101 102 return; 103 } 104 105 # . . . . . . . . . . And then off by its lonesome: 106 107 sub end_Verbatim { 108 return unless $_[0]{'Errata_seen'}; 109 my $self = shift; 110 if(Pod::Simple::ASCII) { 111 $self->{'Thispara'} =~ tr{\xA0}{ }; 112 $self->{'Thispara'} =~ tr{\xAD}{}d; 113 } 114 115 my $i = ' ' x ( 2 * $self->{'Indent'} + 4); 116 117 $self->{'Thispara'} =~ s/^/$i/mg; 118 119 print { $self->{'output_fh'} } '', 120 $self->{'Thispara'}, 121 "\n\n" 122 ; 123 $self->{'Thispara'} = ''; 124 return; 125 } 126 127 #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 128 1; 129 130 __END__ 131 132 =head1 NAME 133 134 Pod::Simple::Checker -- check the Pod syntax of a document 135 136 =head1 SYNOPSIS 137 138 perl -MPod::Simple::Checker -e \ 139 "exit Pod::Simple::Checker->filter(shift)->any_errata_seen" \ 140 thingy.pod 141 142 =head1 DESCRIPTION 143 144 This class is for checking the syntactic validity of Pod. 145 It works by basically acting like a simple-minded version of 146 L<Pod::Simple::Text> that formats only the "Pod Errors" section 147 (if Pod::Simple even generates one for the given document). 148 149 This is a subclass of L<Pod::Simple> and inherits all its methods. 150 151 =head1 SEE ALSO 152 153 L<Pod::Simple>, L<Pod::Simple::Text>, L<Pod::Checker> 154 155 =head1 COPYRIGHT AND DISCLAIMERS 156 157 Copyright (c) 2002 Sean M. Burke. All rights reserved. 158 159 This library is free software; you can redistribute it and/or modify it 160 under the same terms as Perl itself. 161 162 This program is distributed in the hope that it will be useful, but 163 without any warranty; without even the implied warranty of 164 merchantability or fitness for a particular purpose. 165 166 =head1 AUTHOR 167 168 Sean M. Burke C<sburke@cpan.org> 169 170 =cut 171
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |