File Coverage

blib/lib/HDB/CORE.pm
Criterion Covered Total %
statement 6 55 10.9
branch 0 24 0.0
condition 0 3 0.0
subroutine 2 6 33.3
pod 0 4 0.0
total 8 92 8.7


line stmt bran cond sub pod time code
1             #############################################################################
2             ## Name: CORE.pm
3             ## Purpose: HDB::CORE
4             ## Author: Graciliano M. P.
5             ## Modified by:
6             ## Created: 06/01/2003
7             ## RCS-ID:
8             ## Copyright: (c) 2002 Graciliano M. P.
9             ## Licence: This program is free software; you can redistribute it and/or
10             ## modify it under the same terms as Perl itself
11             #############################################################################
12              
13             package HDB::CORE ;
14              
15 1     1   7 use strict qw(vars) ;
  1         1  
  1         38  
16 1     1   5 no warnings ;
  1         2  
  1         540  
17              
18             our $VERSION = '1.0' ;
19              
20             ##############
21             # PARSE_ARGS #
22             ##############
23              
24             sub parse_args {
25 0     0 0   my ( $set , $types ) = @_ ;
26 0           my %args = &lower_keys(@_[2..$#_]) ;
27            
28 0           foreach my $Key ( keys %$types ) {
29 0           my @aliases = @{ $$types{$Key} } ;
  0            
30 0           my $def ;
31 0 0         if (ref $aliases[0] eq 'ARRAY') {
32 0           $def = $aliases[-1] ;
33 0           @aliases = @{ $aliases[0] } ;
  0            
34             }
35            
36 0           my $was_set ;
37 0           foreach my $aliases_i ( @aliases ) {
38 0 0         if ( defined $args{$aliases_i} ) { $$set{$Key} = $args{$aliases_i} ; $was_set = 1 ; last ;}
  0            
  0            
  0            
39             }
40            
41 0 0 0       if (! $was_set && defined $def) { $$set{$Key} = $def ;}
  0            
42            
43             }
44             }
45              
46             ############# (SCALAR|ARRAY|HASH REF \[$%@]var)
47             # PARSE_REF # Parse the reference of a var.
48             ############# (@ARRAY)
49              
50             sub parse_ref {
51 0     0 0   my $ref = ref($_[0]) ;
52 0 0         if ($ref eq '') {
    0          
    0          
    0          
53 0 0         if (! wantarray) { return( $_[0] ) }
  0            
54 0           return( @_ )
55             }
56             elsif ($ref eq 'ARRAY') {
57 0 0         if (! wantarray) { return( (@{$_[0]})[0] ) }
  0            
  0            
58 0           return( @{$_[0]} )
  0            
59             }
60             elsif ($ref eq 'HASH') {
61 0 0         if (! wantarray) { return( (%{$_[0]})[0] ) }
  0            
  0            
62 0           return( %{$_[0]} )
  0            
63             }
64             elsif ($ref eq 'SCALAR') {
65 0           return( ${$_[0]} )
  0            
66             }
67             else {
68 0 0         if (! wantarray) { return( $_[0] ) }
  0            
69 0           return( @_ )
70             }
71             }
72              
73             ##############
74             # LOWER_KEYS #
75             ##############
76              
77             sub lower_keys {
78 0     0 0   my @hash = parse_ref(@_) ;
79            
80 0           for(my $i = 0 ; $i <= $#hash ; $i +=2) {
81 0           $hash[$i] = lc($hash[$i]) ;
82 0           $hash[$i] =~ s/[\W_]//gs ;
83             }
84            
85 0 0         if ( @hash % 2 ) { push(@hash , undef) ;}
  0            
86            
87 0           return( @hash ) ;
88             }
89              
90             ########
91             # PATH #
92             ########
93              
94             sub path {
95 0     0 0   my ( $path ) = @_ ;
96 0           $path =~ s/[\\]/\//gs ;
97 0           $path =~ s/(?:^(\/)\/([^\/])|\/+)/$1\/$2/gs ;
98 0           return( $path ) ;
99             }
100              
101             #######
102             # END #
103             #######
104              
105             1;
106