File Coverage

blib/lib/Padre/Plugin/XML/Document.pm
Criterion Covered Total %
statement 13 15 86.6
branch n/a
condition n/a
subroutine 5 5 100.0
pod n/a
total 18 20 90.0


line stmt bran cond sub pod time code
1             package Padre::Plugin::XML::Document;
2              
3 1     1   4199 use 5.008;
  1         3  
  1         40  
4 1     1   6 use strict;
  1         6  
  1         36  
5 1     1   5 use warnings;
  1         2  
  1         29  
6 1     1   5 use Carp ();
  1         2  
  1         24  
7 1     1   375 use Padre::Document ();
  0            
  0            
8              
9             our $VERSION = '0.10';
10             our @ISA = 'Padre::Document';
11              
12             sub task_syntax {
13             return 'Padre::Task::SyntaxChecker::XML';
14             }
15              
16             sub check_syntax {
17             my $self = shift;
18             my %args = @_;
19             $args{background} = 0;
20             return $self->_check_syntax_internals(\%args);
21             }
22              
23             sub check_syntax_in_background {
24             my $self = shift;
25             my %args = @_;
26             $args{background} = 1;
27             return $self->_check_syntax_internals(\%args);
28             }
29              
30             sub _check_syntax_internals {
31             my $self = shift;
32             my $args = shift;
33              
34             my $text = $self->text_get;
35             unless ( defined $text and $text ne '' ) {
36             return [];
37             }
38              
39             # Do we really need an update?
40             require Digest::MD5;
41             use Encode qw(encode_utf8);
42             my $md5 = Digest::MD5::md5(encode_utf8($text));
43             unless ( $args->{force} ) {
44             if ( defined( $self->{last_checked_md5} )
45             && $self->{last_checked_md5} eq $md5
46             ) {
47             return;
48             }
49             }
50             $self->{last_checked_md5} = $md5;
51              
52             require Padre::Task::SyntaxChecker::XML;
53             my $task = Padre::Task::SyntaxChecker::XML->new(
54             text => $text,
55             filename => $self->editor->{Document}->filename,
56             ( exists $args->{on_finish} ? (on_finish => $args->{on_finish}) : () ),
57             );
58             if ( $args->{background} ) {
59             # asynchronous execution (see on_finish hook)
60             $task->schedule();
61             return();
62             }
63             else {
64             # serial execution, returning the result
65             return () if $task->prepare() =~ /^break$/;
66             $task->run();
67             return $task->{syntax_check};
68             }
69             }
70              
71             sub comment_lines_str { return [ '' ] }
72              
73             1;