Algorithm-Diff-HTMLTable

 view release on metacpan or  search on metacpan

lib/Algorithm/Diff/HTMLTable.pm  view on Meta::CPAN

    $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

        <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>
    

t/02_id.t  view on Meta::CPAN

        <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

        <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;">&auml;
</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;">&uuml;
</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>
    

t/04_eol.t  view on Meta::CPAN

        <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

        <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

        <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

        <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 >&lt;div&gt;html&nbsp;entities&lt;/div&gt;
</td>
            <td style="background-color: gray">1</td>
            <td >&lt;div&gt;html&nbsp;entities&lt;/div&gt;
</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;">&lt;h2&gt;Test&lt;/h2&gt;
</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&nbsp;is&nbsp;a&nbsp;T&quot;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&nbsp;is&nbsp;a&nbsp;T&quot;est</td>
            <td style="background-color: gray">19</td>
            <td >This&nbsp;is&nbsp;a&nbsp;T&quot;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&nbsp;is&nbsp;a&nbsp;T&quot;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&nbsp;is&nbsp;a&nbsp;T&quot;est</td>
        </tr>
    ~;

    is_string $row, $check;
}

done_testing();



( run in 1.650 second using v1.01-cache-2.11-cpan-f56aa216473 )