File: Pod.pm

package info (click to toggle)
libtest-synopsis-expectation-perl 0.12-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 216 kB
  • sloc: perl: 303; makefile: 2; sh: 1
file content (65 lines) | stat: -rw-r--r-- 1,517 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package Test::Synopsis::Expectation::Pod;
use strict;
use warnings;
use parent qw/Pod::Simple::Methody/;

sub new {
    my $class  = shift;
    my $parser = $class->SUPER::new(@_);

    # NOTE I think not good way...
    $parser->{in_head1}    = 0;
    $parser->{in_synopsis} = 0;
    $parser->{in_verbatim} = 0;
    $parser->{no_test}     = 0;

    $parser->{target_codes} = [];

    $parser->accept_target_as_text(qw/test_synopsis_expectation_no_test/);

    return $parser;
}

sub _handle_text {
    my($self, $text) = @_;
    if ($self->{in_head1} && $text =~ /^synopsis$/i) {
        $self->{in_synopsis} = 1;
    }

    # Target codes (that is synopsis code)
    if ($self->{in_synopsis} && $self->{in_verbatim}) {
        unless ($self->{no_test}) {
            push @{$self->{target_codes}}, $text;
        }
        $self->{no_test} = 0;
    }
}

sub _handle_element_start {
    my ($self, $element_name, $attr_hash_r) = @_;

    if ($element_name eq 'head1') {
        $self->{in_head1}    = 1;
        $self->{in_synopsis} = 0;
    }
    elsif ($element_name eq 'Verbatim') {
        $self->{in_verbatim} = 1;
    }
    elsif ($element_name eq 'for') {
        if ($attr_hash_r->{target} eq 'test_synopsis_expectation_no_test') {
            $self->{no_test} = 1;
        }
    }
}

sub _handle_element_end {
    my ($self, $element_name) = @_;

    if ($element_name eq 'head1') {
        $self->{in_head1} = 0;
    }
    elsif ($element_name eq 'Verbatim') {
        $self->{in_verbatim} = 0;
    }
}
1;