File Coverage

blib/lib/Syntax/Keyword/Junction/One.pm
Criterion Covered Total %
statement 137 142 96.4
branch 115 122 94.2
condition n/a
subroutine 21 21 100.0
pod 0 16 0.0
total 273 301 90.7


line stmt bran cond sub pod time code
1             package Syntax::Keyword::Junction::One;
2              
3 10     10   61 use strict;
  10         21  
  10         398  
4 10     10   61 use warnings;
  10         24  
  10         492  
5              
6             our $VERSION = '0.003008'; # VERSION
7              
8 10     10   158 use parent 'Syntax::Keyword::Junction::Base';
  10         20  
  10         111  
9              
10             BEGIN {
11 10 50   10   1091 if ($] >= 5.010001) {
12 10 100   10 0 1086 eval q|
  10 100   3   59  
  10 50       20  
  10 0       79  
  3 0       7  
  3         4  
  3         9  
  3         7  
  8         139  
  3         117  
  2         6  
  2         35  
  0         0  
  0         0  
  0         0  
  0         0  
  0         0  
13             sub match {
14             no if $] > 5.017010, warnings => 'experimental::smartmatch';
15             my ( $self, $other, $is_rhs ) = @_;
16              
17             my $count = 0;
18              
19             if ($is_rhs) {
20              
21             for (@$self) {
22             if ($other ~~ $_) {
23             return if $count;
24             $count = 1;
25             }
26             }
27              
28             return($count == 1);
29             }
30              
31             for (@$self) {
32             if ($_ ~~ $other) {
33             return if $count;
34             $count = 1;
35             }
36             }
37              
38             return($count == 1);
39             }
40             |
41             }
42             }
43              
44             sub num_eq {
45 18 100   18 0 76 return regex_eq(@_) if ref( $_[1] ) eq 'Regexp';
46              
47 13         24 my ( $self, $test ) = @_;
48 13         23 my $count = 0;
49              
50 13         46 for (@$self) {
51 30 100       77 if ( $_ == $test ) {
52 13 100       40 return if $count;
53 11         27 $count = 1;
54             }
55             }
56              
57 11 100       70 return 1 if $count;
58             }
59              
60             sub num_ne {
61 7 100   7 0 33 return regex_ne(@_) if ref( $_[1] ) eq 'Regexp';
62              
63 3         5 my ( $self, $test ) = @_;
64 3         4 my $count = 0;
65              
66 3         7 for (@$self) {
67 6 100       17 if ( $_ != $test ) {
68 3 100       10 return if $count;
69 2         4 $count = 1;
70             }
71             }
72              
73 2 100       35 return 1 if $count;
74             }
75              
76             sub num_ge {
77 17     17 0 34 my ( $self, $test, $switch ) = @_;
78              
79 17 100       59 return num_le( $self, $test ) if $switch;
80              
81 10         19 my $count = 0;
82              
83 10         26 for (@$self) {
84 29 100       65 if ( $_ >= $test ) {
85 11 100       81 return if $count;
86 8         19 $count = 1;
87             }
88             }
89              
90 7 100       44 return 1 if $count;
91             }
92              
93             sub num_gt {
94 12     12 0 23 my ( $self, $test, $switch ) = @_;
95              
96 12 100       35 return num_lt( $self, $test ) if $switch;
97              
98 8         11 my $count = 0;
99              
100 8         16 for (@$self) {
101 23 100       50 if ( $_ > $test ) {
102 8 100       22 return if $count;
103 6         15 $count = 1;
104             }
105             }
106              
107 6 100       47 return 1 if $count;
108             }
109              
110             sub num_le {
111 14     14 0 26 my ( $self, $test, $switch ) = @_;
112              
113 14 100       39 return num_ge( $self, $test ) if $switch;
114              
115 11         15 my $count = 0;
116              
117 11         110 for (@$self) {
118 23 100       51 if ( $_ <= $test ) {
119 11 100       45 return if $count;
120 9         17 $count = 1;
121             }
122             }
123              
124 9 100       54 return 1 if $count;
125             }
126              
127             sub num_lt {
128 12     12 0 20 my ( $self, $test, $switch ) = @_;
129              
130 12 100       31 return num_gt( $self, $test ) if $switch;
131              
132 8         14 my $count = 0;
133              
134 8         30 for (@$self) {
135 21 100       50 if ( $_ < $test ) {
136 8 100       24 return if $count;
137 6         10 $count = 1;
138             }
139             }
140              
141 6 100       36 return 1 if $count;
142             }
143              
144             sub str_eq {
145 3     3 0 7 my ( $self, $test ) = @_;
146 3         6 my $count = 0;
147              
148 3         8 for (@$self) {
149 6 100       17 if ( $_ eq $test ) {
150 3 100       61 return if $count;
151 2         5 $count = 1;
152             }
153             }
154              
155 2 100       12 return 1 if $count;
156             }
157              
158             sub str_ne {
159 4     4 0 10 my ( $self, $test ) = @_;
160 4         7 my $count = 0;
161              
162 4         13 for (@$self) {
163 9 100       30 if ( $_ ne $test ) {
164 4 100       17 return if $count;
165 3         7 $count = 1;
166             }
167             }
168              
169 3 100       19 return 1 if $count;
170             }
171              
172             sub str_ge {
173 11     11 0 24 my ( $self, $test, $switch ) = @_;
174              
175 11 100       53 return str_le( $self, $test ) if $switch;
176              
177 7         12 my $count = 0;
178              
179 7         17 for (@$self) {
180 13 100       233 if ( $_ ge $test ) {
181 7 100       32 return if $count;
182 5         12 $count = 1;
183             }
184             }
185              
186 5 100       34 return 1 if $count;
187             }
188              
189             sub str_gt {
190 11     11 0 107 my ( $self, $test, $switch ) = @_;
191              
192 11 100       35 return str_lt( $self, $test ) if $switch;
193              
194 7         9 my $count = 0;
195              
196 7         16 for (@$self) {
197 14 100       37 if ( $_ gt $test ) {
198 8 100       26 return if $count;
199 6         14 $count = 1;
200             }
201             }
202              
203 5 100       41 return 1 if $count;
204             }
205              
206             sub str_le {
207 10     10 0 25 my ( $self, $test, $switch ) = @_;
208              
209 10 100       37 return str_ge( $self, $test ) if $switch;
210              
211 7         8 my $count = 0;
212              
213 7         20 for (@$self) {
214 14 100       43 if ( $_ le $test ) {
215 5 100       19 return if $count;
216 4         8 $count = 1;
217             }
218             }
219              
220 6 100       40 return 1 if $count;
221             }
222              
223             sub str_lt {
224 12     12 0 26 my ( $self, $test, $switch ) = @_;
225              
226 12 100       39 return str_gt( $self, $test ) if $switch;
227              
228 8         11 my $count = 0;
229              
230 8         18 for (@$self) {
231 16 100       43 if ( $_ lt $test ) {
232 8 100       29 return if $count;
233 6         17 $count = 1;
234             }
235             }
236              
237 6 100       39 return 1 if $count;
238             }
239              
240             sub regex_eq {
241 5     5 0 11 my ( $self, $test, $switch ) = @_;
242              
243 5         17 my $count = 0;
244              
245 5         11 for (@$self) {
246 12 100       143 if ( $_ =~ $test ) {
247 8 100       28 return if $count;
248 5         11 $count = 1;
249             }
250             }
251              
252 2 50       100 return 1 if $count;
253             }
254              
255             sub regex_ne {
256 4     4 0 8 my ( $self, $test, $switch ) = @_;
257              
258 4         6 my $count = 0;
259              
260 4         10 for (@$self) {
261 11 100       69 if ( $_ !~ $test ) {
262 4 100       12 return if $count;
263 3         6 $count = 1;
264             }
265             }
266              
267 3 100       19 return 1 if $count;
268             }
269              
270             sub bool {
271 5     5 0 55 my ($self) = @_;
272 5         6 my $count = 0;
273              
274 5         15 for (@$self) {
275 11 100       30 if ($_) {
276 5 100       14 return if $count;
277 4         7 $count = 1;
278             }
279             }
280              
281 4 100       20 return 1 if $count;
282             }
283              
284             1;
285              
286             __END__