Algorithm-Diff-HTMLTable
view release on metacpan or search on metacpan
lib/Algorithm/Diff/HTMLTable.pm view on Meta::CPAN
sub _start_table {
my $self = shift;
my %files = @_;
my $old = $self->_file_info( $files{a}, 'old' );
my $new = $self->_file_info( $files{b}, 'new' );
my $id = defined $self->{id} ? qq~id="$self->{id}"~ : '';
return qq~
<table $id style="border: 1px solid;">
<thead>
<tr>
<th colspan="2"><span id="diff_old_info">$old</span></th>
<th colspan="2"><span id="diff_new_info">$new</span></th>
</tr>
</thead>
<tbody>
~;
}
lib/Algorithm/Diff/HTMLTable.pm view on Meta::CPAN
}
sub _add_tablerow {
my $self = shift;
my %params = @_;
my ($line_nr_a, $line_a, $color_a) = @params{qw/line_nr_a line_a color_a/};
my ($line_nr_b, $line_b, $color_b) = @params{qw/line_nr_b line_b color_b/};
$color_a = $color_a ? qq~style="color: $color_a;"~ : '';
$color_b = $color_b ? qq~style="color: $color_b;"~ : '';
$line_a = encode_entities( $line_a // '' );
$line_b = encode_entities( $line_b // '' );
$line_a =~ s{ }{ }g;
$line_b =~ s{ }{ }g;
my $row = qq~
<tr style="border: 1px solid">
<td style="background-color: gray">$line_nr_a</td>
<td $color_a>$line_a</td>
<td style="background-color: gray">$line_nr_b</td>
<td $color_b>$line_b</td>
</tr>
~;
}
sub _end_table {
my $self = shift;
return qq~
</tbody>
t/01_base.t view on Meta::CPAN
$check =~ s{\\}{\\\\}g;
like_string( $html, qr/$check/ );
#diag $html;
done_testing();
__DATA__
<table style="border: 1px solid;">
<thead>
<tr>
<th colspan="2"><span id="diff_old_info">__files0__<br />.{24}</span></th>
<th colspan="2"><span id="diff_new_info">__files1__<br />.{24}</span></th>
</tr>
</thead>
<tbody>
<tr style="border: 1px solid">
<td style="background-color: gray">1</td>
<td style="color: red;">a
</td>
<td style="background-color: gray"></td>
<td ></td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">2</td>
<td >b
</td>
<td style="background-color: gray">1</td>
<td >b
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">3</td>
<td >c
</td>
<td style="background-color: gray">2</td>
<td >c
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray"></td>
<td ></td>
<td style="background-color: gray">3</td>
<td style="color: green;">d
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">4</td>
<td >e
</td>
<td style="background-color: gray">4</td>
<td >e
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">5</td>
<td style="color: red;">h
</td>
<td style="background-color: gray">5</td>
<td style="color: green;">f
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">6</td>
<td >j
</td>
<td style="background-color: gray">6</td>
<td >j
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray"></td>
<td ></td>
<td style="background-color: gray">7</td>
<td style="color: green;">k
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">7</td>
<td >l
</td>
<td style="background-color: gray">8</td>
<td >l
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">8</td>
<td >m
</td>
<td style="background-color: gray">9</td>
<td >m
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">9</td>
<td style="color: red;">n
</td>
<td style="background-color: gray">10</td>
<td style="color: green;">r
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">10</td>
<td style="color: red;">p
</td>
<td style="background-color: gray">11</td>
<td style="color: green;">s
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">11</td>
<td style="color: red;"></td>
<td style="background-color: gray">12</td>
<td style="color: green;">t
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">12</td>
<td >
</td>
<td style="background-color: gray">13</td>
<td >
</td>
</tr>
</tbody>
</table>
$check =~ s{\\}{\\\\}g;
like_string( $html, qr/$check/ );
#diag $html;
done_testing();
__DATA__
<table id="test_id" style="border: 1px solid;">
<thead>
<tr>
<th colspan="2"><span id="diff_old_info">__files0__<br />.{24}</span></th>
<th colspan="2"><span id="diff_new_info">__files1__<br />.{24}</span></th>
</tr>
</thead>
<tbody>
<tr style="border: 1px solid">
<td style="background-color: gray">1</td>
<td style="color: red;">a
</td>
<td style="background-color: gray"></td>
<td ></td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">2</td>
<td >b
</td>
<td style="background-color: gray">1</td>
<td >b
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">3</td>
<td >c
</td>
<td style="background-color: gray">2</td>
<td >c
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray"></td>
<td ></td>
<td style="background-color: gray">3</td>
<td style="color: green;">d
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">4</td>
<td >e
</td>
<td style="background-color: gray">4</td>
<td >e
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">5</td>
<td style="color: red;">h
</td>
<td style="background-color: gray">5</td>
<td style="color: green;">f
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">6</td>
<td >j
</td>
<td style="background-color: gray">6</td>
<td >j
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray"></td>
<td ></td>
<td style="background-color: gray">7</td>
<td style="color: green;">k
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">7</td>
<td >l
</td>
<td style="background-color: gray">8</td>
<td >l
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">8</td>
<td >m
</td>
<td style="background-color: gray">9</td>
<td >m
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">9</td>
<td style="color: red;">n
</td>
<td style="background-color: gray">10</td>
<td style="color: green;">r
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">10</td>
<td style="color: red;">p
</td>
<td style="background-color: gray">11</td>
<td style="color: green;">s
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">11</td>
<td style="color: red;"></td>
<td style="background-color: gray">12</td>
<td style="color: green;">t
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">12</td>
<td >
</td>
<td style="background-color: gray">13</td>
<td >
</td>
</tr>
</tbody>
</table>
t/03_encoding.t view on Meta::CPAN
like_string( $html, qr/$check/ );
#is_string( $html, $check );
#diag $html;
done_testing();
__DATA__
<table id="test_id" style="border: 1px solid;">
<thead>
<tr>
<th colspan="2"><span id="diff_old_info">__files0__<br />.{24}</span></th>
<th colspan="2"><span id="diff_new_info">__files1__<br />.{24}</span></th>
</tr>
</thead>
<tbody>
<tr style="border: 1px solid">
<td style="background-color: gray">1</td>
<td style="color: red;">ä
</td>
<td style="background-color: gray"></td>
<td ></td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">2</td>
<td >b
</td>
<td style="background-color: gray">1</td>
<td >b
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">3</td>
<td >c
</td>
<td style="background-color: gray">2</td>
<td >c
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray"></td>
<td ></td>
<td style="background-color: gray">3</td>
<td style="color: green;">d
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">4</td>
<td >e
</td>
<td style="background-color: gray">4</td>
<td >e
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">5</td>
<td style="color: red;">h
</td>
<td style="background-color: gray">5</td>
<td style="color: green;">f
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">6</td>
<td >j
</td>
<td style="background-color: gray">6</td>
<td >j
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray"></td>
<td ></td>
<td style="background-color: gray">7</td>
<td style="color: green;">k
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">7</td>
<td >l
</td>
<td style="background-color: gray">8</td>
<td >l
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">8</td>
<td >m
</td>
<td style="background-color: gray">9</td>
<td >m
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">9</td>
<td style="color: red;">n
</td>
<td style="background-color: gray">10</td>
<td style="color: green;">r
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">10</td>
<td style="color: red;">p
</td>
<td style="background-color: gray">11</td>
<td style="color: green;">s
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">11</td>
<td style="color: red;"></td>
<td style="background-color: gray">12</td>
<td style="color: green;">t
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">12</td>
<td style="color: red;"></td>
<td style="background-color: gray">13</td>
<td style="color: green;">ü
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">13</td>
<td >
</td>
<td style="background-color: gray">14</td>
<td >
</td>
</tr>
</tbody>
</table>
$check =~ s{\\}{\\\\}g;
like_string( $html, qr/$check/ );
#diag $html;
done_testing();
__DATA__
<table id="test_id" style="border: 1px solid;">
<thead>
<tr>
<th colspan="2"><span id="diff_old_info">__files0__<br />.{24}</span></th>
<th colspan="2"><span id="diff_new_info">__files1__<br />.{24}</span></th>
</tr>
</thead>
<tbody>
<tr style="border: 1px solid">
<td style="background-color: gray">1</td>
<td style="color: red;">---
</td>
<td style="background-color: gray">1</td>
<td style="color: green;">----
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">2</td>
<td style="color: red;"></td>
<td style="background-color: gray">2</td>
<td style="color: green;">asdfkjasldf
---
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">3</td>
<td >test
asdfl
---
</td>
<td style="background-color: gray">3</td>
<td >test
asdfl
---
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">4</td>
<td style="color: red;">kdjfkajs
jaksdfj
---
</td>
<td style="background-color: gray">4</td>
<td style="color: green;">kdjfkajs
jaksdfjud
---
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">5</td>
<td style="color: red;">
</td>
<td style="background-color: gray">5</td>
<td style="color: green;">dadd
asd
ad
ad
---
</td>
</tr>
</tbody>
</table>
t/05_arrayrefs.t view on Meta::CPAN
my @lines;
if ( open my $fh, '<', $file ) {
@lines = <$fh>;
}
@lines;
}
__DATA__
<table style="border: 1px solid;">
<thead>
<tr>
<th colspan="2"><span id="diff_old_info"></span></th>
<th colspan="2"><span id="diff_new_info"></span></th>
</tr>
</thead>
<tbody>
<tr style="border: 1px solid">
<td style="background-color: gray">1</td>
<td style="color: red;">a
</td>
<td style="background-color: gray"></td>
<td ></td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">2</td>
<td >b
</td>
<td style="background-color: gray">1</td>
<td >b
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">3</td>
<td >c
</td>
<td style="background-color: gray">2</td>
<td >c
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray"></td>
<td ></td>
<td style="background-color: gray">3</td>
<td style="color: green;">d
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">4</td>
<td >e
</td>
<td style="background-color: gray">4</td>
<td >e
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">5</td>
<td style="color: red;">h
</td>
<td style="background-color: gray">5</td>
<td style="color: green;">f
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">6</td>
<td >j
</td>
<td style="background-color: gray">6</td>
<td >j
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray"></td>
<td ></td>
<td style="background-color: gray">7</td>
<td style="color: green;">k
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">7</td>
<td >l
</td>
<td style="background-color: gray">8</td>
<td >l
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">8</td>
<td >m
</td>
<td style="background-color: gray">9</td>
<td >m
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">9</td>
<td style="color: red;">n
</td>
<td style="background-color: gray">10</td>
<td style="color: green;">r
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">10</td>
<td style="color: red;">p
</td>
<td style="background-color: gray">11</td>
<td style="color: green;">s
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">11</td>
<td style="color: red;"></td>
<td style="background-color: gray">12</td>
<td style="color: green;">t
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">12</td>
<td >
</td>
<td style="background-color: gray">13</td>
<td >
</td>
</tr>
</tbody>
</table>
t/06_title.t view on Meta::CPAN
my @lines;
if ( open my $fh, '<', $file ) {
@lines = <$fh>;
}
@lines;
}
__DATA__
<table style="border: 1px solid;">
<thead>
<tr>
<th colspan="2"><span id="diff_old_info">01_a.txt</span></th>
<th colspan="2"><span id="diff_new_info">01_b.txt</span></th>
</tr>
</thead>
<tbody>
<tr style="border: 1px solid">
<td style="background-color: gray">1</td>
<td style="color: red;">a
</td>
<td style="background-color: gray"></td>
<td ></td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">2</td>
<td >b
</td>
<td style="background-color: gray">1</td>
<td >b
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">3</td>
<td >c
</td>
<td style="background-color: gray">2</td>
<td >c
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray"></td>
<td ></td>
<td style="background-color: gray">3</td>
<td style="color: green;">d
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">4</td>
<td >e
</td>
<td style="background-color: gray">4</td>
<td >e
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">5</td>
<td style="color: red;">h
</td>
<td style="background-color: gray">5</td>
<td style="color: green;">f
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">6</td>
<td >j
</td>
<td style="background-color: gray">6</td>
<td >j
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray"></td>
<td ></td>
<td style="background-color: gray">7</td>
<td style="color: green;">k
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">7</td>
<td >l
</td>
<td style="background-color: gray">8</td>
<td >l
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">8</td>
<td >m
</td>
<td style="background-color: gray">9</td>
<td >m
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">9</td>
<td style="color: red;">n
</td>
<td style="background-color: gray">10</td>
<td style="color: green;">r
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">10</td>
<td style="color: red;">p
</td>
<td style="background-color: gray">11</td>
<td style="color: green;">s
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">11</td>
<td style="color: red;"></td>
<td style="background-color: gray">12</td>
<td style="color: green;">t
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">12</td>
<td >
</td>
<td style="background-color: gray">13</td>
<td >
</td>
</tr>
</tbody>
</table>
t/07_html.t view on Meta::CPAN
$check =~ s{\\}{\\\\}g;
like_string( $html, qr/$check/ );
#diag $html;
done_testing();
__DATA__
<table style="border: 1px solid;">
<thead>
<tr>
<th colspan="2"><span id="diff_old_info">__files0__<br />.{24}</span></th>
<th colspan="2"><span id="diff_new_info">__files1__<br />.{24}</span></th>
</tr>
</thead>
<tbody>
<tr style="border: 1px solid">
<td style="background-color: gray">1</td>
<td ><div>html entities</div>
</td>
<td style="background-color: gray">1</td>
<td ><div>html entities</div>
</td>
</tr>
<tr style="border: 1px solid">
<td style="background-color: gray">2</td>
<td style="color: red;">
</td>
<td style="background-color: gray">2</td>
<td style="color: green;"><h2>Test</h2>
</td>
</tr>
</tbody>
</table>
t/08_add_tablerow.t view on Meta::CPAN
my $table = Algorithm::Diff::HTMLTable->new;
{
my $row = $table->_add_tablerow(
line_nr_a => 20,
line_nr_b => 19,
);
my $check = q~
<tr style="border: 1px solid">
<td style="background-color: gray">20</td>
<td ></td>
<td style="background-color: gray">19</td>
<td ></td>
</tr>
~;
is_string $row, $check;
}
{
my $row = $table->_add_tablerow(
line_nr_a => 20,
line_a => 'This is a T"est',
line_nr_b => 19,
);
my $check = q~
<tr style="border: 1px solid">
<td style="background-color: gray">20</td>
<td >This is a T"est</td>
<td style="background-color: gray">19</td>
<td ></td>
</tr>
~;
is_string $row, $check;
}
{
my $row = $table->_add_tablerow(
line_nr_a => 20,
line_a => 'This is a T"est',
line_b => 'This is a T"est',
line_nr_b => 19,
);
my $check = q~
<tr style="border: 1px solid">
<td style="background-color: gray">20</td>
<td >This is a T"est</td>
<td style="background-color: gray">19</td>
<td >This is a T"est</td>
</tr>
~;
is_string $row, $check;
}
{
my $row = $table->_add_tablerow(
line_nr_a => 20,
line_b => 'This is a T"est',
line_nr_b => 19,
);
my $check = q~
<tr style="border: 1px solid">
<td style="background-color: gray">20</td>
<td ></td>
<td style="background-color: gray">19</td>
<td >This is a T"est</td>
</tr>
~;
is_string $row, $check;
}
{
my $row = $table->_add_tablerow(
line_nr_a => 20,
line_b => 'This is a T"est',
color_b => 'green',
line_nr_b => 19,
);
my $check = q~
<tr style="border: 1px solid">
<td style="background-color: gray">20</td>
<td ></td>
<td style="background-color: gray">19</td>
<td style="color: green;">This is a T"est</td>
</tr>
~;
is_string $row, $check;
}
done_testing();
( run in 1.646 second using v1.01-cache-2.11-cpan-49f99fa48dc )