File Coverage

blib/lib/PPIx/QuoteLike/Constant.pm
Criterion Covered Total %
statement 53 54 98.1
branch n/a
condition n/a
subroutine 17 17 100.0
pod n/a
total 70 71 98.5


line stmt bran cond sub pod time code
1             package PPIx::QuoteLike::Constant;
2              
3 8     8   155366 use 5.006;
  8         37  
4              
5 8     8   34 use strict;
  8         15  
  8         127  
6 8     8   30 use warnings;
  8         23  
  8         170  
7              
8 8     8   33 use Carp;
  8         10  
  8         413  
9 8     8   42 use base qw{ Exporter };
  8         14  
  8         1057  
10              
11             our $VERSION = '0.022';
12              
13 8     8   47 no warnings qw{ once }; # For older Perls.
  8         14  
  8         630  
14              
15             our @CARP_NOT = qw{
16             PPIx::QuoteLike
17             PPIx::QuoteLike::Constant
18             PPIx::QuoteLike::Dumper
19             PPIx::QuoteLike::Token
20             PPIx::QuoteLike::Token::Control
21             PPIx::QuoteLike::Token::Delimiter
22             PPIx::QuoteLike::Token::Interpolation
23             PPIx::QuoteLike::Token::String
24             PPIx::QuoteLike::Token::Structure
25             PPIx::QuoteLike::Token::Unknown
26             PPIx::QuoteLike::Token::Whitespace
27             PPIx::QuoteLike::Utils
28             };
29              
30 8     8   47 use warnings qw{ once };
  8         18  
  8         627  
31              
32             our @EXPORT_OK = qw{
33             ARRAY_REF
34             MINIMUM_PERL
35             HAVE_PPIX_REGEXP
36             LOCATION_LINE
37             LOCATION_CHARACTER
38             LOCATION_COLUMN
39             LOCATION_LOGICAL_LINE
40             LOCATION_LOGICAL_FILE
41             SUFFICIENT_UTF8_SUPPORT_FOR_WEIRD_DELIMITERS
42             VARIABLE_RE
43             @CARP_NOT
44             };
45              
46 8     8   45 use constant ARRAY_REF => ref [];
  8         12  
  8         782  
47              
48             # We can't depend on PPIx::Regexp without getting into a circular
49             # dependency. I think. But we can sure use it if we can come by it.
50 8         18 use constant HAVE_PPIX_REGEXP => do {
51 8         22 local $@ = undef;
52 8         12 eval { ## no critic (RequireCheckingReturnValueOfEval)
53 8         1511 require PPIx::Regexp;
54 0         0 1;
55             };
56 8     8   46 };
  8         11  
57              
58             # Location constants. Must align with PPI
59 8     8   38 use constant LOCATION_LINE => 0;
  8         11  
  8         367  
60 8     8   60 use constant LOCATION_CHARACTER => 1;
  8         11  
  8         331  
61 8     8   36 use constant LOCATION_COLUMN => 2;
  8         11  
  8         394  
62 8     8   41 use constant LOCATION_LOGICAL_LINE => 3;
  8         12  
  8         356  
63 8     8   47 use constant LOCATION_LOGICAL_FILE => 4;
  8         13  
  8         370  
64              
65 8     8   41 use constant MINIMUM_PERL => '5.000';
  8         69  
  8         402  
66              
67 8     8   41 use constant SUFFICIENT_UTF8_SUPPORT_FOR_WEIRD_DELIMITERS => $] ge '5.008003';
  8         29  
  8         1493  
68              
69             # Match the name of a variable. The user of this needs to anchor it
70             # right after the sigil. The line noise is [[:punct:]] as documented in
71             # perlrecharclass, less anything that needs to be excluded (currently
72             # only '@' and '*').
73 8         462 use constant VARIABLE_RE => qr/
74             [[:alpha:]_]\w* (?: :: [[:alpha:]_] \w* )* |
75             \^ [A-Z_] |
76             [0-9]+ |
77             [-!"#\$%&'()+,.\/:;<=>?[\\\]^_`{|}~]
78 8     8   50 /smx;
  8         13  
79              
80             1;
81              
82             __END__