File Coverage

blib/lib/PPIx/Regexp/Token/GroupType/Modifier.pm
Criterion Covered Total %
statement 19 19 100.0
branch 4 4 100.0
condition n/a
subroutine 6 6 100.0
pod 1 1 100.0
total 30 30 100.0


line stmt bran cond sub pod time code
1             =head1 NAME
2              
3             PPIx::Regexp::Token::GroupType::Modifier - Represent the modifiers in a modifier group.
4              
5             =head1 SYNOPSIS
6              
7             use PPIx::Regexp::Dumper;
8             PPIx::Regexp::Dumper->new( 'qr{(?i:foo)}smx' )
9             ->print();
10              
11             =head1 INHERITANCE
12              
13             C<PPIx::Regexp::Token::GroupType::Modifier> is a
14             L<PPIx::Regexp::Token::GroupType|PPIx::Regexp::Token::GroupType> and a
15             L<PPIx::Regexp::Token::Modifier|PPIx::Regexp::Token::Modifier>.
16              
17             C<PPIx::Regexp::Token::GroupType::Modifier> has no descendants.
18              
19             =head1 DESCRIPTION
20              
21             This class represents the modifiers in a modifier group. The useful
22             functionality comes from
23             L<PPIx::Regexp::Token::Modifier|PPIx::Regexp::Token::Modifier>.
24              
25             =head1 METHODS
26              
27             This class provides no public methods beyond those provided by its
28             superclasses.
29              
30             =cut
31              
32             package PPIx::Regexp::Token::GroupType::Modifier;
33              
34 9     9   43 use strict;
  9         17  
  9         252  
35 9     9   28 use warnings;
  9         13  
  9         385  
36              
37 9     9   36 use base qw{ PPIx::Regexp::Token::Modifier PPIx::Regexp::Token::GroupType };
  9         24  
  9         946  
38              
39 9     9   38 use PPIx::Regexp::Constant qw{ MINIMUM_PERL @CARP_NOT };
  9         19  
  9         5953  
40              
41             our $VERSION = '0.091';
42              
43             {
44              
45             my %perl_version_introduced = (
46             '?:' => MINIMUM_PERL,
47             );
48              
49             sub perl_version_introduced {
50 9     9 1 3086 my ( $self ) = @_;
51 9         81 my $content = $self->unescaped_content();
52             exists $perl_version_introduced{$content}
53 9 100       38 and return $perl_version_introduced{$content};
54 8         42 my $ver = $self->SUPER::perl_version_introduced();
55 8 100       70 $ver > 5.005 and return $ver;
56 2         8 return '5.005';
57             }
58              
59             }
60              
61             =begin comment
62              
63             # Return true if the token can be quantified, and false otherwise
64             # sub can_be_quantified { return };
65              
66             sub __PPIX_TOKENIZER__regexp {
67             my ( $class, $tokenizer, $character, $char_type ) = @_;
68              
69             # Note that the optional escapes are because any of the
70             # non-open-bracket punctuation characters might be our delimiter.
71             my $accept;
72             $accept = $tokenizer->find_regexp(
73             qr{ \A \\? [?] [[:lower:]]* \\? -? [[:lower:]]* \\? : }smx )
74             and return $accept;
75             $accept = $tokenizer->find_regexp(
76             qr{ \A \\? [?] \^ [[:lower:]]* \\? : }smx )
77             and return $accept;
78              
79             return;
80             }
81              
82             =end comment
83              
84             =cut
85              
86             sub __make_group_type_matcher {
87             return {
88 13     13   359 '' => [
89             qr{ \A [?] [[:lower:]]* -? [[:lower:]]* : }smx,
90             qr{ \A [?] \^ [[:lower:]]* : }smx,
91             ],
92             '?' => [
93             qr{ \A \\ [?] [[:lower:]]* -? [[:lower:]]* : }smx,
94             qr{ \A \\ [?] \^ [[:lower:]]* : }smx,
95             ],
96             '-' => [
97             qr{ \A [?] [[:lower:]]* (?: \\ - )? [[:lower:]]* : }smx,
98             qr{ \A [?] \^ [[:lower:]]* : }smx,
99             ],
100             ':' => [
101             qr{ \A [?] [[:lower:]]* -? [[:lower:]]* \\ : }smx,
102             qr{ \A [?] \^ [[:lower:]]* \\ : }smx,
103             ],
104             };
105             }
106              
107             1;
108              
109             __END__
110              
111             =head1 SUPPORT
112              
113             Support is by the author. Please file bug reports at
114             L<https://rt.cpan.org/Public/Dist/Display.html?Name=PPIx-Regexp>,
115             L<https://github.com/trwyant/perl-PPIx-Regexp/issues>, or in
116             electronic mail to the author.
117              
118             =head1 AUTHOR
119              
120             Thomas R. Wyant, III F<wyant at cpan dot org>
121              
122             =head1 COPYRIGHT AND LICENSE
123              
124             Copyright (C) 2009-2023, 2025 by Thomas R. Wyant, III
125              
126             This program is free software; you can redistribute it and/or modify it
127             under the same terms as Perl 5.10.0. For more details, see the full text
128             of the licenses in the directory LICENSES.
129              
130             This program is distributed in the hope that it will be useful, but
131             without any warranty; without even the implied warranty of
132             merchantability or fitness for a particular purpose.
133              
134             =cut
135              
136             # ex: set textwidth=72 :