$Pod::POM::View::Text::VERSION
=
'2.01'
;
require
5.006;
use
vars
qw( $DEBUG $ERROR $AUTOLOAD $INDENT )
;
$DEBUG
= 0
unless
defined
$DEBUG
;
$INDENT
= 0;
sub
new {
my
$class
=
shift
;
my
$args
=
ref
$_
[0] eq
'HASH'
?
shift
: {
@_
};
bless
{
INDENT
=> 0,
%$args
,
},
$class
;
}
sub
view {
my
(
$self
,
$type
,
$item
) =
@_
;
if
(
$type
=~ s/^seq_//) {
return
$item
;
}
elsif
(UNIVERSAL::isa(
$item
,
'HASH'
)) {
if
(
defined
$item
->{ content }) {
return
$item
->{ content }->present(
$self
);
}
elsif
(
defined
$item
->{ text }) {
my
$text
=
$item
->{ text };
return
ref
$text
?
$text
->present(
$self
) :
$text
;
}
else
{
return
''
;
}
}
elsif
(!
ref
$item
) {
return
$item
;
}
else
{
return
''
;
}
}
sub
view_head1 {
my
(
$self
,
$head1
) =
@_
;
my
$indent
=
ref
$self
? \
$self
->{ INDENT } : \
$INDENT
;
my
$pad
=
' '
x
$$indent
;
local
$Text::Wrap::unexpand
= 0;
my
$title
= wrap(
$pad
,
$pad
,
$head1
->title->present(
$self
));
$$indent
+= 4;
my
$output
=
"$title\n"
.
$head1
->content->present(
$self
);
$$indent
-= 4;
return
$output
;
}
sub
view_head2 {
my
(
$self
,
$head2
) =
@_
;
my
$indent
=
ref
$self
? \
$self
->{ INDENT } : \
$INDENT
;
my
$pad
=
' '
x
$$indent
;
local
$Text::Wrap::unexpand
= 0;
my
$title
= wrap(
$pad
,
$pad
,
$head2
->title->present(
$self
));
$$indent
+= 4;
my
$output
=
"$title\n"
.
$head2
->content->present(
$self
);
$$indent
-= 4;
return
$output
;
}
sub
view_head3 {
my
(
$self
,
$head3
) =
@_
;
my
$indent
=
ref
$self
? \
$self
->{ INDENT } : \
$INDENT
;
my
$pad
=
' '
x
$$indent
;
local
$Text::Wrap::unexpand
= 0;
my
$title
= wrap(
$pad
,
$pad
,
$head3
->title->present(
$self
));
$$indent
+= 4;
my
$output
=
"$title\n"
.
$head3
->content->present(
$self
);
$$indent
-= 4;
return
$output
;
}
sub
view_head4 {
my
(
$self
,
$head4
) =
@_
;
my
$indent
=
ref
$self
? \
$self
->{ INDENT } : \
$INDENT
;
my
$pad
=
' '
x
$$indent
;
local
$Text::Wrap::unexpand
= 0;
my
$title
= wrap(
$pad
,
$pad
,
$head4
->title->present(
$self
));
$$indent
+= 4;
my
$output
=
"$title\n"
.
$head4
->content->present(
$self
);
$$indent
-= 4;
return
$output
;
}
sub
view_over {
my
(
$self
,
$over
) =
@_
;
if
(@{
$over
->item}) {
return
$over
->content->present(
$self
);
}
else
{
my
$indent
=
ref
$self
? \
$self
->{ INDENT } : \
$INDENT
;
my
$pad
=
' '
x
$$indent
;
$$indent
+= 4;
my
$content
=
$over
->content->present(
$self
);
$$indent
-= 4;
return
$content
;
}
}
sub
view_item {
my
(
$self
,
$item
) =
@_
;
my
$indent
=
ref
$self
? \
$self
->{ INDENT } : \
$INDENT
;
my
$pad
=
' '
x
$$indent
;
local
$Text::Wrap::unexpand
= 0;
my
$title
= wrap(
$pad
.
'* '
,
$pad
.
' '
,
$item
->title->present(
$self
));
$$indent
+= 2;
my
$content
=
$item
->content->present(
$self
);
$$indent
-= 2;
return
"$title\n\n$content"
;
}
sub
view_for {
my
(
$self
,
$for
) =
@_
;
return
''
unless
$for
->
format
() =~ /\btext\b/;
return
$for
->text()
.
"\n\n"
;
}
sub
view_begin {
my
(
$self
,
$begin
) =
@_
;
return
''
unless
$begin
->
format
() =~ /\btext\b/;
return
$begin
->content->present(
$self
);
}
sub
view_textblock {
my
(
$self
,
$text
) =
@_
;
my
$indent
=
ref
$self
? \
$self
->{ INDENT } : \
$INDENT
;
$text
=~ s/\s+/ /mg;
$$indent
||= 0;
my
$pad
=
' '
x
$$indent
;
local
$Text::Wrap::unexpand
= 0;
return
wrap(
$pad
,
$pad
,
$text
) .
"\n\n"
;
}
sub
view_verbatim {
my
(
$self
,
$text
) =
@_
;
my
$indent
=
ref
$self
? \
$self
->{ INDENT } : \
$INDENT
;
my
$pad
=
' '
x
$$indent
;
$text
=~ s/^/
$pad
/mg;
return
"$text\n\n"
;
}
sub
view_seq_bold {
my
(
$self
,
$text
) =
@_
;
return
"*$text*"
;
}
sub
view_seq_italic {
my
(
$self
,
$text
) =
@_
;
return
"_${text}_"
;
}
sub
view_seq_code {
my
(
$self
,
$text
) =
@_
;
return
"'$text'"
;
}
sub
view_seq_file {
my
(
$self
,
$text
) =
@_
;
return
"_${text}_"
;
}
my
$entities
= {
gt
=>
'>'
,
lt
=>
'<'
,
amp
=>
'&'
,
quot
=>
'"'
,
};
sub
view_seq_entity {
my
(
$self
,
$entity
) =
@_
;
return
$entities
->{
$entity
} ||
$entity
;
}
sub
view_seq_index {
return
''
;
}
sub
view_seq_link {
my
(
$self
,
$link
) =
@_
;
if
(
$link
=~ s/^.*?\|//) {
return
$link
;
}
else
{
return
"the $link manpage"
;
}
}
1;