File Coverage

blib/lib/SQL/Load/Util.pm
Criterion Covered Total %
statement 38 40 95.0
branch 7 10 70.0
condition n/a
subroutine 8 8 100.0
pod 4 4 100.0
total 57 62 91.9


line stmt bran cond sub pod time code
1             package SQL::Load::Util;
2              
3 7     7   132881 use strict;
  7         34  
  7         195  
4 7     7   34 use warnings;
  7         13  
  7         198  
5 7         413 use String::CamelCase qw/
6             camelize
7             decamelize
8 7     7   3096 /;
  7         4059  
9 7     7   48 use base qw/Exporter/;
  7         14  
  7         3577  
10            
11             our @EXPORT_OK = qw/
12             name_list
13             parse
14             remove_extension
15             trim
16             /;
17              
18             sub name_list {
19 157     157 1 12059 my $name = shift;
20            
21 157         191 my @list;
22            
23 157         227 $name = remove_extension($name);
24            
25 157         347 $name =~ s/-/_/xg;
26 157         325 push @list, camelize $name;
27            
28 157         1970 $name = decamelize $name;
29 157         1533 push @list, $name;
30            
31 157         299 $name =~ s/_/-/xg;
32 157         214 push @list, $name;
33            
34 157 100       487 return wantarray ? @list : \@list;
35             }
36              
37             sub parse {
38 30     30 1 7888 my $content = shift;
39            
40             # get all sql by name
41 30         369 my (@data) = $content =~ /--\s*(?:#|\[|\()\s*([\w-]+)\s*(?:|]|\))\n([^;]+;)/g;
42            
43             # get all sql without name
44 30 100       85 unless (@data) {
45 11         126 my (@list) = $content =~ /([^;]+;)/g;
46            
47 11         28 my $num = 1;
48 11         22 for my $sql (@list) {
49 28         44 push(@data, $num++);
50 28         63 push(@data, trim($sql));
51             }
52            
53             # if got one or nothing, set content as default
54 11 50       34 unless (@data) {
55 0         0 push(@data, 'default');
56 0         0 push(@data, trim($content));
57             }
58             }
59            
60 30 50       156 return wantarray ? @data : \@data;
61             }
62              
63             sub remove_extension {
64 187     187 1 1297 my $value = shift;
65            
66 187 50       476 $value =~ s/\.sql$//i if $value;
67            
68 187         353 return $value;
69             }
70              
71             sub trim {
72 32     32 1 1493 my $value = shift;
73            
74 32         1035 $value =~ s/^\s+|\s+$//g;
75            
76 32         86 return $value;
77             }
78              
79             1;
80              
81             __END__