| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
package Data::Record::Serialize::Util; |
|
2
|
|
|
|
|
|
|
|
|
3
|
|
|
|
|
|
|
# ABSTRACT: Useful things |
|
4
|
|
|
|
|
|
|
|
|
5
|
21
|
|
|
21
|
|
263240
|
use v5.12; |
|
|
21
|
|
|
|
|
107
|
|
|
6
|
21
|
|
|
21
|
|
164
|
use strict; |
|
|
21
|
|
|
|
|
72
|
|
|
|
21
|
|
|
|
|
708
|
|
|
7
|
21
|
|
|
21
|
|
153
|
use warnings; |
|
|
21
|
|
|
|
|
86
|
|
|
|
21
|
|
|
|
|
1882
|
|
|
8
|
|
|
|
|
|
|
our $VERSION = '2.02'; |
|
9
|
|
|
|
|
|
|
|
|
10
|
21
|
|
|
21
|
|
147
|
use parent 'Exporter::Tiny'; |
|
|
21
|
|
|
|
|
41
|
|
|
|
21
|
|
|
|
|
168
|
|
|
11
|
|
|
|
|
|
|
|
|
12
|
|
|
|
|
|
|
my @TYPE_CATEGORY_NAMES; |
|
13
|
|
|
|
|
|
|
my %TYPES; |
|
14
|
|
|
|
|
|
|
BEGIN { |
|
15
|
21
|
|
|
21
|
|
8146
|
@TYPE_CATEGORY_NAMES = qw( |
|
16
|
|
|
|
|
|
|
ANY |
|
17
|
|
|
|
|
|
|
INTEGER |
|
18
|
|
|
|
|
|
|
FLOAT |
|
19
|
|
|
|
|
|
|
NUMBER |
|
20
|
|
|
|
|
|
|
STRING |
|
21
|
|
|
|
|
|
|
NOT_STRING |
|
22
|
|
|
|
|
|
|
BOOLEAN |
|
23
|
|
|
|
|
|
|
); |
|
24
|
|
|
|
|
|
|
|
|
25
|
21
|
|
|
|
|
796
|
%TYPES = ( |
|
26
|
|
|
|
|
|
|
T_INTEGER => 'I', |
|
27
|
|
|
|
|
|
|
T_NUMBER => 'N', |
|
28
|
|
|
|
|
|
|
T_STRING => 'S', |
|
29
|
|
|
|
|
|
|
T_BOOLEAN => 'B', |
|
30
|
|
|
|
|
|
|
); |
|
31
|
|
|
|
|
|
|
} |
|
32
|
|
|
|
|
|
|
|
|
33
|
21
|
|
|
21
|
|
12008
|
use enum @TYPE_CATEGORY_NAMES; |
|
|
21
|
|
|
|
|
35462
|
|
|
|
21
|
|
|
|
|
256
|
|
|
34
|
21
|
|
|
21
|
|
17718
|
use constant \%TYPES; |
|
|
21
|
|
|
|
|
77
|
|
|
|
21
|
|
|
|
|
2924
|
|
|
35
|
|
|
|
|
|
|
|
|
36
|
|
|
|
|
|
|
## no critic(BuiltinFunctions::ProhibitComplexMappings) |
|
37
|
|
|
|
|
|
|
our @TYPE_CATEGORIES = map { |
|
38
|
|
|
|
|
|
|
; # add a ; to help 5.10 |
|
39
|
21
|
|
|
21
|
|
172
|
no strict 'refs'; ## no critic(ProhibitNoStrict) |
|
|
21
|
|
|
|
|
44
|
|
|
|
21
|
|
|
|
|
10520
|
|
|
40
|
|
|
|
|
|
|
$_->(); |
|
41
|
|
|
|
|
|
|
} @TYPE_CATEGORY_NAMES; |
|
42
|
|
|
|
|
|
|
|
|
43
|
|
|
|
|
|
|
our %EXPORT_TAGS = ( |
|
44
|
|
|
|
|
|
|
types => [ keys %TYPES ], |
|
45
|
|
|
|
|
|
|
categories => \@TYPE_CATEGORY_NAMES, |
|
46
|
|
|
|
|
|
|
subs => [qw( is_type index_types )], |
|
47
|
|
|
|
|
|
|
); |
|
48
|
|
|
|
|
|
|
|
|
49
|
|
|
|
|
|
|
our @EXPORT_OK = map { @{$_} } values %EXPORT_TAGS; |
|
50
|
|
|
|
|
|
|
|
|
51
|
|
|
|
|
|
|
my @TypeRE; |
|
52
|
|
|
|
|
|
|
$TypeRE[ $_->[0] ] = $_->[1] |
|
53
|
|
|
|
|
|
|
for [ +( ANY ) => qr/.*/ ], |
|
54
|
|
|
|
|
|
|
[ +( STRING ) => qr/^S/i ], |
|
55
|
|
|
|
|
|
|
[ +( FLOAT ) => qr/^N/i ], |
|
56
|
|
|
|
|
|
|
[ +( INTEGER ) => qr/^I/i ], |
|
57
|
|
|
|
|
|
|
[ +( BOOLEAN ) => qr/^B/i ], |
|
58
|
|
|
|
|
|
|
[ +( NUMBER ) => qr/^[NI]/i ], |
|
59
|
|
|
|
|
|
|
[ +( NOT_STRING ) => qr/^[^S]+/ ]; |
|
60
|
|
|
|
|
|
|
|
|
61
|
|
|
|
|
|
|
sub is_type { |
|
62
|
96
|
|
|
96
|
0
|
183
|
my ( $type, $type_enum ) = @_; |
|
63
|
96
|
|
|
|
|
678
|
$type =~ $TypeRE[$type_enum]; |
|
64
|
|
|
|
|
|
|
} |
|
65
|
|
|
|
|
|
|
|
|
66
|
|
|
|
|
|
|
sub index_types { |
|
67
|
60
|
|
|
60
|
0
|
1740
|
my ( $types ) = @_; |
|
68
|
|
|
|
|
|
|
|
|
69
|
60
|
|
|
|
|
232
|
my @fields = keys %$types; |
|
70
|
60
|
|
|
|
|
163
|
my @type_index; |
|
71
|
|
|
|
|
|
|
|
|
72
|
60
|
|
|
|
|
325
|
for my $category ( @TYPE_CATEGORIES ) { |
|
73
|
420
|
|
|
|
|
835
|
my $re = $TypeRE[$category]; |
|
74
|
420
|
|
|
|
|
816
|
$type_index[$category] = [ grep { $types->{$_} =~ $re } @fields ]; |
|
|
1001
|
|
|
|
|
5671
|
|
|
75
|
|
|
|
|
|
|
} |
|
76
|
|
|
|
|
|
|
|
|
77
|
60
|
|
|
|
|
529
|
return \@type_index; |
|
78
|
|
|
|
|
|
|
} |
|
79
|
|
|
|
|
|
|
|
|
80
|
|
|
|
|
|
|
1; |
|
81
|
|
|
|
|
|
|
|
|
82
|
|
|
|
|
|
|
# |
|
83
|
|
|
|
|
|
|
# This file is part of Data-Record-Serialize |
|
84
|
|
|
|
|
|
|
# |
|
85
|
|
|
|
|
|
|
# This software is Copyright (c) 2017 by Smithsonian Astrophysical Observatory. |
|
86
|
|
|
|
|
|
|
# |
|
87
|
|
|
|
|
|
|
# This is free software, licensed under: |
|
88
|
|
|
|
|
|
|
# |
|
89
|
|
|
|
|
|
|
# The GNU General Public License, Version 3, June 2007 |
|
90
|
|
|
|
|
|
|
# |
|
91
|
|
|
|
|
|
|
|
|
92
|
|
|
|
|
|
|
__END__ |