line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package Test::HTML::Lint; |
2
|
|
|
|
|
|
|
|
3
|
6
|
|
|
6
|
|
133751
|
use warnings; |
|
6
|
|
|
|
|
28
|
|
|
6
|
|
|
|
|
171
|
|
4
|
6
|
|
|
6
|
|
26
|
use strict; |
|
6
|
|
|
|
|
8
|
|
|
6
|
|
|
|
|
113
|
|
5
|
|
|
|
|
|
|
|
6
|
6
|
|
|
6
|
|
651
|
use Test::Builder; |
|
6
|
|
|
|
|
56482
|
|
|
6
|
|
|
|
|
101
|
|
7
|
6
|
|
|
6
|
|
26
|
use Exporter; |
|
6
|
|
|
|
|
8
|
|
|
6
|
|
|
|
|
191
|
|
8
|
|
|
|
|
|
|
|
9
|
6
|
|
|
6
|
|
1415
|
use HTML::Lint; |
|
6
|
|
|
|
|
13
|
|
|
6
|
|
|
|
|
156
|
|
10
|
|
|
|
|
|
|
|
11
|
6
|
|
|
6
|
|
33
|
use vars qw( @ISA $VERSION @EXPORT ); |
|
6
|
|
|
|
|
9
|
|
|
6
|
|
|
|
|
2713
|
|
12
|
|
|
|
|
|
|
|
13
|
|
|
|
|
|
|
@ISA = qw( HTML::Parser Exporter ); |
14
|
|
|
|
|
|
|
|
15
|
|
|
|
|
|
|
=head1 NAME |
16
|
|
|
|
|
|
|
|
17
|
|
|
|
|
|
|
Test::HTML::Lint - Test::More-style wrapper around HTML::Lint |
18
|
|
|
|
|
|
|
|
19
|
|
|
|
|
|
|
=head1 VERSION |
20
|
|
|
|
|
|
|
|
21
|
|
|
|
|
|
|
Version 2.27_03 |
22
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
=cut |
24
|
|
|
|
|
|
|
|
25
|
|
|
|
|
|
|
$VERSION = '2.27_03'; |
26
|
|
|
|
|
|
|
|
27
|
|
|
|
|
|
|
my $Tester = Test::Builder->new; |
28
|
|
|
|
|
|
|
|
29
|
|
|
|
|
|
|
=head1 SYNOPSIS |
30
|
|
|
|
|
|
|
|
31
|
|
|
|
|
|
|
use Test::HTML::Lint tests => 4; |
32
|
|
|
|
|
|
|
|
33
|
|
|
|
|
|
|
my $table = build_display_table(); |
34
|
|
|
|
|
|
|
html_ok( $table, 'Built display table properly' ); |
35
|
|
|
|
|
|
|
|
36
|
|
|
|
|
|
|
=head1 DESCRIPTION |
37
|
|
|
|
|
|
|
|
38
|
|
|
|
|
|
|
This module provides a few convenience methods for testing exception |
39
|
|
|
|
|
|
|
based code. It is built with L and plays happily with |
40
|
|
|
|
|
|
|
L and friends. |
41
|
|
|
|
|
|
|
|
42
|
|
|
|
|
|
|
If you are not already familiar with L now would be the time |
43
|
|
|
|
|
|
|
to go take a look. |
44
|
|
|
|
|
|
|
|
45
|
|
|
|
|
|
|
=head1 EXPORT |
46
|
|
|
|
|
|
|
|
47
|
|
|
|
|
|
|
C |
48
|
|
|
|
|
|
|
|
49
|
|
|
|
|
|
|
=cut |
50
|
|
|
|
|
|
|
|
51
|
|
|
|
|
|
|
@EXPORT = qw( |
52
|
|
|
|
|
|
|
html_ok |
53
|
|
|
|
|
|
|
html_fragment_ok |
54
|
|
|
|
|
|
|
); |
55
|
|
|
|
|
|
|
|
56
|
|
|
|
|
|
|
sub import { |
57
|
6
|
|
|
6
|
|
49
|
my $self = shift; |
58
|
6
|
|
|
|
|
10
|
my $pack = caller; |
59
|
|
|
|
|
|
|
|
60
|
6
|
|
|
|
|
24
|
$Tester->exported_to($pack); |
61
|
6
|
|
|
|
|
73
|
$Tester->plan(@_); |
62
|
|
|
|
|
|
|
|
63
|
6
|
|
|
|
|
1232
|
$self->export_to_level(1, $self, @EXPORT); |
64
|
|
|
|
|
|
|
|
65
|
6
|
|
|
|
|
6690
|
return; |
66
|
|
|
|
|
|
|
} |
67
|
|
|
|
|
|
|
|
68
|
|
|
|
|
|
|
=head2 html_ok( [$lint, ] $html, $name ) |
69
|
|
|
|
|
|
|
|
70
|
|
|
|
|
|
|
Checks to see if C<$html> is a valid HTML document, including checks |
71
|
|
|
|
|
|
|
for having C<< >>, C<< >>, C<< > >> and </td>
</tr>
<tr>
<td class="h" >
<a name="72">72</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> C<< <body> >> tags. </td>
</tr>
<tr>
<td class="h" >
<a name="73">73</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="74">74</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> If you're checking something that is only a fragment of an HTML document, </td>
</tr>
<tr>
<td class="h" >
<a name="75">75</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> use C<html_fragment_ok()>. </td>
</tr>
<tr>
<td class="h" >
<a name="76">76</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="77">77</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> If you pass an HTML::Lint object, C<html_ok()> will use that for its </td>
</tr>
<tr>
<td class="h" >
<a name="78">78</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> settings. </td>
</tr>
<tr>
<td class="h" >
<a name="79">79</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="80">80</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $lint = new HTML::Lint( only_types => STRUCTURE ); </td>
</tr>
<tr>
<td class="h" >
<a name="81">81</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> html_ok( $lint, $content, "Web page passes structural tests only" ); </td>
</tr>
<tr>
<td class="h" >
<a name="82">82</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="83">83</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Otherwise, it will use the default rules. </td>
</tr>
<tr>
<td class="h" >
<a name="84">84</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="85">85</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> html_ok( $content, "Web page passes ALL tests" ); </td>
</tr>
<tr>
<td class="h" >
<a name="86">86</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="87">87</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Note that if you pass in your own HTML::Lint object, C<html_ok()> </td>
</tr>
<tr>
<td class="h" >
<a name="88">88</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> will clear its errors before using it. </td>
</tr>
<tr>
<td class="h" >
<a name="89">89</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="90">90</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =cut </td>
</tr>
<tr>
<td class="h" >
<a name="91">91</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="92">92</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> sub html_ok { </td>
</tr>
<tr>
<td class="h" >
<a name="93">93</a>
</td>
<td class="c3" >
6
</td>
<td >
</td>
<td >
</td>
<td class="c3" >
<a href="blib-lib-Test-HTML-Lint-pm--subroutine.html#93-1">
6
</a>
</td>
<td class="c3" >
<a href="blib-lib-Test-HTML-Lint-pm--subroutine.html#93-1">
1
</a>
</td>
<td >
3805
</td>
<td class="s"> my $lint; </td>
</tr>
<tr>
<td class="h" >
<a name="94">94</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="95">95</a>
</td>
<td class="c3" >
6
</td>
<td class="c3" >
<a href="blib-lib-Test-HTML-Lint-pm--branch.html#95-1">
100
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
31
</td>
<td class="s"> if ( ref($_[0]) eq 'HTML::Lint' ) { </td>
</tr>
<tr>
<td class="h" >
<a name="96">96</a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
2
</td>
<td class="s"> $lint = shift; </td>
</tr>
<tr>
<td class="h" >
<a name="97">97</a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
4
</td>
<td class="s"> $lint->newfile(); </td>
</tr>
<tr>
<td class="h" >
<a name="98">98</a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
3
</td>
<td class="s"> $lint->clear_errors(); </td>
</tr>
<tr>
<td class="h" >
<a name="99">99</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="100">100</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> else { </td>
</tr>
<tr>
<td class="h" >
<a name="101">101</a>
</td>
<td class="c3" >
5
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
31
</td>
<td class="s"> $lint = HTML::Lint->new; </td>
</tr>
<tr>
<td class="h" >
<a name="102">102</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="103">103</a>
</td>
<td class="c3" >
6
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
12
</td>
<td class="s"> my $html = shift; </td>
</tr>
<tr>
<td class="h" >
<a name="104">104</a>
</td>
<td class="c3" >
6
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
10
</td>
<td class="s"> my $name = shift; </td>
</tr>
<tr>
<td class="h" >
<a name="105">105</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="106">106</a>
</td>
<td class="c3" >
6
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
11
</td>
<td class="s"> my $ok = defined $html; </td>
</tr>
<tr>
<td class="h" >
<a name="107">107</a>
</td>
<td class="c3" >
6
</td>
<td class="c3" >
<a href="blib-lib-Test-HTML-Lint-pm--branch.html#107-1">
100
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
17
</td>
<td class="s"> if ( !$ok ) { </td>
</tr>
<tr>
<td class="h" >
<a name="108">108</a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
5
</td>
<td class="s"> $Tester->ok( 0, $name ); </td>
</tr>
<tr>
<td class="h" >
<a name="109">109</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="110">110</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> else { </td>
</tr>
<tr>
<td class="h" >
<a name="111">111</a>
</td>
<td class="c3" >
5
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
17
</td>
<td class="s"> $lint->parse( $html ); </td>
</tr>
<tr>
<td class="h" >
<a name="112">112</a>
</td>
<td class="c3" >
5
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
27
</td>
<td class="s"> $lint->eof(); </td>
</tr>
<tr>
<td class="h" >
<a name="113">113</a>
</td>
<td class="c3" >
5
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
19
</td>
<td class="s"> my $nerr = scalar $lint->errors; </td>
</tr>
<tr>
<td class="h" >
<a name="114">114</a>
</td>
<td class="c3" >
5
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
10
</td>
<td class="s"> $ok = !$nerr; </td>
</tr>
<tr>
<td class="h" >
<a name="115">115</a>
</td>
<td class="c3" >
5
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
24
</td>
<td class="s"> $Tester->ok( $ok, $name ); </td>
</tr>
<tr>
<td class="h" >
<a name="116">116</a>
</td>
<td class="c3" >
5
</td>
<td class="c3" >
<a href="blib-lib-Test-HTML-Lint-pm--branch.html#116-1">
100
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
2818
</td>
<td class="s"> if ( !$ok ) { </td>
</tr>
<tr>
<td class="h" >
<a name="117">117</a>
</td>
<td class="c3" >
2
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
5
</td>
<td class="s"> my $msg = 'Errors:'; </td>
</tr>
<tr>
<td class="h" >
<a name="118">118</a>
</td>
<td class="c3" >
2
</td>
<td class="c0" >
<a href="blib-lib-Test-HTML-Lint-pm--branch.html#118-1">
50
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
5
</td>
<td class="s"> $msg .= " $name" if $name; </td>
</tr>
<tr>
<td class="h" >
<a name="119">119</a>
</td>
<td class="c3" >
2
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
5
</td>
<td class="s"> $Tester->diag( $msg ); </td>
</tr>
<tr>
<td class="h" >
<a name="120">120</a>
</td>
<td class="c3" >
2
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
416
</td>
<td class="s"> $Tester->diag( $_->as_string ) for $lint->errors; </td>
</tr>
<tr>
<td class="h" >
<a name="121">121</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="122">122</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="123">123</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="124">124</a>
</td>
<td class="c3" >
6
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
1816
</td>
<td class="s"> return $ok; </td>
</tr>
<tr>
<td class="h" >
<a name="125">125</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="126">126</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="127">127</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="128">128</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head2 html_fragment_ok( [$lint, ] $html, $name ) </td>
</tr>
<tr>
<td class="h" >
<a name="129">129</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="130">130</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Checks that C<$fragment> is valid HTML, but not necessarily a valid </td>
</tr>
<tr>
<td class="h" >
<a name="131">131</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> HTML document. </td>
</tr>
<tr>
<td class="h" >
<a name="132">132</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="133">133</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> For example, this is a valid fragment, but not a valid HTML document: </td>
</tr>
<tr>
<td class="h" >
<a name="134">134</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="135">135</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> <body> </td>
</tr>
<tr>
<td class="h" >
<a name="136">136</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> <p>Lorem ipsum</p> </td>
</tr>
<tr>
<td class="h" >
<a name="137">137</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </body> </td>
</tr>
<tr>
<td class="h" >
<a name="138">138</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="139">139</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> because it doesn't contain C<< <html> >> and C<< <head> >> tags. If you </td>
</tr>
<tr>
<td class="h" >
<a name="140">140</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> want to check that it is a valid document, use C<html_ok()>. </td>
</tr>
<tr>
<td class="h" >
<a name="141">141</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="142">142</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> If you pass an HTML::Lint object, C<html_fragment_ok()> will use that for its </td>
</tr>
<tr>
<td class="h" >
<a name="143">143</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> settings. </td>
</tr>
<tr>
<td class="h" >
<a name="144">144</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="145">145</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> my $lint = new HTML::Lint( only_types => STRUCTURE ); </td>
</tr>
<tr>
<td class="h" >
<a name="146">146</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> html_fragment_ok( $lint, $content, 'Web page passes structural tests only' ); </td>
</tr>
<tr>
<td class="h" >
<a name="147">147</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="148">148</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Otherwise, it will use the default rules. </td>
</tr>
<tr>
<td class="h" >
<a name="149">149</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="150">150</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> html_fragment_ok( $content, 'Fragment passes ALL tests' ); </td>
</tr>
<tr>
<td class="h" >
<a name="151">151</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="152">152</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Note that if you pass in your own HTML::Lint object, C<html_fragment_ok()> </td>
</tr>
<tr>
<td class="h" >
<a name="153">153</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> will clear its errors before using it. </td>
</tr>
<tr>
<td class="h" >
<a name="154">154</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="155">155</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =cut </td>
</tr>
<tr>
<td class="h" >
<a name="156">156</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="157">157</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> sub html_fragment_ok { </td>
</tr>
<tr>
<td class="h" >
<a name="158">158</a>
</td>
<td class="c3" >
2
</td>
<td >
</td>
<td >
</td>
<td class="c3" >
<a href="blib-lib-Test-HTML-Lint-pm--subroutine.html#158-1">
2
</a>
</td>
<td class="c3" >
<a href="blib-lib-Test-HTML-Lint-pm--subroutine.html#158-1">
1
</a>
</td>
<td >
4167
</td>
<td class="s"> my $lint; </td>
</tr>
<tr>
<td class="h" >
<a name="159">159</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="160">160</a>
</td>
<td class="c3" >
2
</td>
<td class="c0" >
<a href="blib-lib-Test-HTML-Lint-pm--branch.html#160-1">
50
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
6
</td>
<td class="s"> if ( ref($_[0]) eq 'HTML::Lint' ) { </td>
</tr>
<tr>
<td class="h" >
<a name="161">161</a>
</td>
<td class="c0" >
<a href="#162">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
0
</td>
<td class="s"> $lint = shift; </td>
</tr>
<tr>
<td class="h" >
<a name="162">162</a>
</td>
<td class="c0" >
<a href="#163">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
0
</td>
<td class="s"> $lint->newfile(); </td>
</tr>
<tr>
<td class="h" >
<a name="163">163</a>
</td>
<td class="c0" >
<a href="#173">
0
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
0
</td>
<td class="s"> $lint->clear_errors(); </td>
</tr>
<tr>
<td class="h" >
<a name="164">164</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="165">165</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> else { </td>
</tr>
<tr>
<td class="h" >
<a name="166">166</a>
</td>
<td class="c3" >
2
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
7
</td>
<td class="s"> $lint = HTML::Lint->new; </td>
</tr>
<tr>
<td class="h" >
<a name="167">167</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="168">168</a>
</td>
<td class="c3" >
2
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
4
</td>
<td class="s"> my $html = shift; </td>
</tr>
<tr>
<td class="h" >
<a name="169">169</a>
</td>
<td class="c3" >
2
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
3
</td>
<td class="s"> my $name = shift; </td>
</tr>
<tr>
<td class="h" >
<a name="170">170</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="171">171</a>
</td>
<td class="c3" >
2
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
4
</td>
<td class="s"> my $ok = defined $html; </td>
</tr>
<tr>
<td class="h" >
<a name="172">172</a>
</td>
<td class="c3" >
2
</td>
<td class="c0" >
<a href="blib-lib-Test-HTML-Lint-pm--branch.html#172-1">
50
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
4
</td>
<td class="s"> if ( !$ok ) { </td>
</tr>
<tr>
<td class="h" >
<a name="173">173</a>
</td>
<td class="c0" >
0
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
0
</td>
<td class="s"> $Tester->ok( 0, $name ); </td>
</tr>
<tr>
<td class="h" >
<a name="174">174</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="175">175</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> else { </td>
</tr>
<tr>
<td class="h" >
<a name="176">176</a>
</td>
<td class="c3" >
2
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
5
</td>
<td class="s"> $lint->parse( $html ); </td>
</tr>
<tr>
<td class="h" >
<a name="177">177</a>
</td>
<td class="c3" >
2
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
5
</td>
<td class="s"> $lint->eof(); </td>
</tr>
<tr>
<td class="h" >
<a name="178">178</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="179">179</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> # Ignore doc-level errors. </td>
</tr>
<tr>
<td class="h" >
<a name="180">180</a>
</td>
<td class="c3" >
2
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
6
</td>
<td class="s"> my @errors = grep { $_->errcode ne 'doc-tag-required' } $lint->errors; </td>
</tr>
<tr>
<td class="h" >
<a > </a>
</td>
<td class="c3" >
10
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
17
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="181">181</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="182">182</a>
</td>
<td class="c3" >
2
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
3
</td>
<td class="s"> my $nerr = @errors; </td>
</tr>
<tr>
<td class="h" >
<a name="183">183</a>
</td>
<td class="c3" >
2
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
4
</td>
<td class="s"> $ok = !$nerr; </td>
</tr>
<tr>
<td class="h" >
<a name="184">184</a>
</td>
<td class="c3" >
2
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
7
</td>
<td class="s"> $Tester->ok( $ok, $name ); </td>
</tr>
<tr>
<td class="h" >
<a name="185">185</a>
</td>
<td class="c3" >
2
</td>
<td class="c3" >
<a href="blib-lib-Test-HTML-Lint-pm--branch.html#185-1">
100
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
980
</td>
<td class="s"> if ( !$ok ) { </td>
</tr>
<tr>
<td class="h" >
<a name="186">186</a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
2
</td>
<td class="s"> my $msg = 'Errors:'; </td>
</tr>
<tr>
<td class="h" >
<a name="187">187</a>
</td>
<td class="c3" >
1
</td>
<td class="c0" >
<a href="blib-lib-Test-HTML-Lint-pm--branch.html#187-1">
50
</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
4
</td>
<td class="s"> $msg .= " $name" if $name; </td>
</tr>
<tr>
<td class="h" >
<a name="188">188</a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
4
</td>
<td class="s"> $Tester->diag( $msg ); </td>
</tr>
<tr>
<td class="h" >
<a name="189">189</a>
</td>
<td class="c3" >
1
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
241
</td>
<td class="s"> $Tester->diag( $_->as_string ) for @errors; </td>
</tr>
<tr>
<td class="h" >
<a name="190">190</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="191">191</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="192">192</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="193">193</a>
</td>
<td class="c3" >
2
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
201
</td>
<td class="s"> return $ok; </td>
</tr>
<tr>
<td class="h" >
<a name="194">194</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> } </td>
</tr>
<tr>
<td class="h" >
<a name="195">195</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="196">196</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="197">197</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head1 BUGS </td>
</tr>
<tr>
<td class="h" >
<a name="198">198</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="199">199</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> All bugs and requests are now being handled through GitHub. </td>
</tr>
<tr>
<td class="h" >
<a name="200">200</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="201">201</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> https://github.com/petdance/html-lint/issues </td>
</tr>
<tr>
<td class="h" >
<a name="202">202</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="203">203</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> DO NOT send bug reports to http://rt.cpan.org/. </td>
</tr>
<tr>
<td class="h" >
<a name="204">204</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="205">205</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="206">206</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head1 TO DO </td>
</tr>
<tr>
<td class="h" >
<a name="207">207</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="208">208</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> There needs to be a C<html_table_ok()> to check that the HTML is a </td>
</tr>
<tr>
<td class="h" >
<a name="209">209</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> self-contained, well-formed table, and then a comparable one for </td>
</tr>
<tr>
<td class="h" >
<a name="210">210</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> C<html_page_ok()>. </td>
</tr>
<tr>
<td class="h" >
<a name="211">211</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="212">212</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> If you think this module should do something that it doesn't do at the </td>
</tr>
<tr>
<td class="h" >
<a name="213">213</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> moment please let me know. </td>
</tr>
<tr>
<td class="h" >
<a name="214">214</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="215">215</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head1 ACKNOWLEDGEMENTS </td>
</tr>
<tr>
<td class="h" >
<a name="216">216</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="217">217</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Thanks to chromatic and Michael G Schwern for the excellent Test::Builder, </td>
</tr>
<tr>
<td class="h" >
<a name="218">218</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> without which this module wouldn't be possible. </td>
</tr>
<tr>
<td class="h" >
<a name="219">219</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="220">220</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Thanks to Adrian Howard for writing Test::Exception, from which most of </td>
</tr>
<tr>
<td class="h" >
<a name="221">221</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> this module is taken. </td>
</tr>
<tr>
<td class="h" >
<a name="222">222</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="223">223</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head1 COPYRIGHT & LICENSE </td>
</tr>
<tr>
<td class="h" >
<a name="224">224</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="225">225</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Copyright 2005-2017 Andy Lester. </td>
</tr>
<tr>
<td class="h" >
<a name="226">226</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="227">227</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> This program is free software; you can redistribute it and/or modify </td>
</tr>
<tr>
<td class="h" >
<a name="228">228</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> it under the terms of the Artistic License v2.0. </td>
</tr>
<tr>
<td class="h" >
<a name="229">229</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="230">230</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> http://www.opensource.org/licenses/Artistic-2.0 </td>
</tr>
<tr>
<td class="h" >
<a name="231">231</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="232">232</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Please note that these modules are not products of or supported by the </td>
</tr>
<tr>
<td class="h" >
<a name="233">233</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> employers of the various contributors to the code. </td>
</tr>
<tr>
<td class="h" >
<a name="234">234</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="235">235</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =head1 AUTHOR </td>
</tr>
<tr>
<td class="h" >
<a name="236">236</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="237">237</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> Andy Lester, C<andy@petdance.com> </td>
</tr>
<tr>
<td class="h" >
<a name="238">238</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="239">239</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> =cut </td>
</tr>
<tr>
<td class="h" >
<a name="240">240</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> </td>
</tr>
<tr>
<td class="h" >
<a name="241">241</a>
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td >
</td>
<td class="s"> 1; </td>
</tr>
</table>
</body>
</html>
|