#!/usr/bin/perl
use
5.010001;
my
$help
;
my
$context
;
my
$tidy
= HTML::T5->new;
GetOptions(
'help|version'
=> \
$help
,
'context:i'
=> \
$context
,
'noerrors'
=>
sub
{
$tidy
->ignore(
type
=> [ TIDY_ERROR ] ) },
'nowarnings'
=>
sub
{
$tidy
->ignore(
type
=> [ TIDY_WARNING ] ) },
) or
$help
= 1;
if
( !
@ARGV
||
$help
) {
print
"webtidy v$HTML::T5::VERSION using tidy v"
. HTML::T5::tidy_library_version() .
"\n"
;
print
<DATA>;
exit
1;
}
for
my
$url
(
@ARGV
) {
my
@lines
;
if
(
$url
=~ /^https?:/ ) {
warn
q{Can't retrieve URLs without LWP::Simple installed}
;
next
;
}
my
$content
= LWP::Simple::get(
$url
);
if
(
$content
) {
@lines
=
split
( /\n/,
$content
);
$_
=
"$_\n"
for
@lines
;
}
else
{
warn
"Unable to fetch $url\n"
;
next
;
}
}
else
{
open
(
my
$fh
,
'<'
,
$url
) or
die
"Can't open $url: $!"
;
@lines
= <
$fh
>;
close
$fh
or
die
$!;
}
$tidy
->parse(
$url
,
@lines
);
for
my
$message
(
$tidy
->messages ) {
print
$message
->as_string(),
"\n"
;
if
(
defined
$context
) {
$context
+= 0;
my
$lineno
=
$message
->line - 1;
my
$start
=
$lineno
-
$context
;
$start
= 0
if
$start
< 0;
my
$end
=
$lineno
+
$context
;
$end
=
$#lines
if
$end
>
$#lines
;
for
my
$i
(
$start
..
$end
) {
printf
(
'%5d: %s'
,
$i
+1,
$lines
[
$i
] );
}
print
"\n"
;
}
}
$tidy
->clear_messages();
}