line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package SVN::Dump::Property; |
2
|
|
|
|
|
|
|
$SVN::Dump::Property::VERSION = '0.08'; |
3
|
12
|
|
|
12
|
|
58704
|
use strict; |
|
12
|
|
|
|
|
25
|
|
|
12
|
|
|
|
|
286
|
|
4
|
12
|
|
|
12
|
|
52
|
use warnings; |
|
12
|
|
|
|
|
15
|
|
|
12
|
|
|
|
|
5185
|
|
5
|
|
|
|
|
|
|
|
6
|
|
|
|
|
|
|
my $NL = "\012"; |
7
|
|
|
|
|
|
|
|
8
|
|
|
|
|
|
|
# FIXME should I use Tie::Hash::IxHash or Tie::Hash::Indexed? |
9
|
|
|
|
|
|
|
sub new { |
10
|
478
|
|
|
478
|
1
|
1430
|
my ( $class, @args ) = @_; |
11
|
478
|
|
|
|
|
1404
|
return bless { |
12
|
|
|
|
|
|
|
keys => [], |
13
|
|
|
|
|
|
|
hash => {}, |
14
|
|
|
|
|
|
|
}, $class; |
15
|
|
|
|
|
|
|
} |
16
|
|
|
|
|
|
|
|
17
|
|
|
|
|
|
|
sub set { |
18
|
816
|
|
|
816
|
1
|
2846
|
my ( $self, $k, $v ) = @_; |
19
|
|
|
|
|
|
|
|
20
|
816
|
100
|
|
|
|
1445
|
push @{ $self->{keys} }, $k if !exists $self->{hash}->{$k}; |
|
815
|
|
|
|
|
1368
|
|
21
|
816
|
|
|
|
|
2027
|
$self->{hash}{$k} = $v; |
22
|
|
|
|
|
|
|
} |
23
|
9
|
|
|
9
|
1
|
37
|
sub get { return $_[0]{hash}{ $_[1] }; } |
24
|
3
|
|
|
3
|
1
|
394
|
sub keys { return @{ $_[0]{keys} }; } |
|
3
|
|
|
|
|
13
|
|
25
|
3
|
|
|
3
|
1
|
1343
|
sub values { return @{ $_[0]{hash} }{ @{ $_[0]{keys} } }; } |
|
3
|
|
|
|
|
14
|
|
|
3
|
|
|
|
|
7
|
|
26
|
|
|
|
|
|
|
sub delete { |
27
|
9
|
|
|
9
|
1
|
1273
|
my ( $self, @keys ) = @_; |
28
|
9
|
100
|
|
|
|
22
|
return if !@keys; |
29
|
8
|
|
|
|
|
12
|
my $re = qr/^@{[join '|', map { quotemeta } @keys]}$/; |
|
8
|
|
|
|
|
24
|
|
|
14
|
|
|
|
|
150
|
|
30
|
8
|
|
|
|
|
19
|
$self->{keys} = [ grep { !/$re/ } @{ $self->{keys} } ]; |
|
42
|
|
|
|
|
127
|
|
|
8
|
|
|
|
|
14
|
|
31
|
8
|
|
|
|
|
17
|
delete @{ $self->{hash} }{@keys}; |
|
8
|
|
|
|
|
38
|
|
32
|
|
|
|
|
|
|
} |
33
|
|
|
|
|
|
|
|
34
|
|
|
|
|
|
|
sub as_string { |
35
|
617
|
|
|
617
|
1
|
1596
|
my ($self) = @_; |
36
|
617
|
|
|
|
|
766
|
my $string = ''; |
37
|
|
|
|
|
|
|
|
38
|
|
|
|
|
|
|
$string .= |
39
|
|
|
|
|
|
|
defined $self->{hash}{$_} |
40
|
|
|
|
|
|
|
# existing key |
41
|
|
|
|
|
|
|
? ( "K " . length($_) . $NL ) . "$_$NL" |
42
|
|
|
|
|
|
|
. ( "V " . length( $self->{hash}{$_} ) . $NL ) |
43
|
|
|
|
|
|
|
. "$self->{hash}{$_}$NL" |
44
|
|
|
|
|
|
|
# deleted key (v3) |
45
|
|
|
|
|
|
|
: ( "D " . length($_) . "$NL$_$NL" ) |
46
|
617
|
100
|
|
|
|
645
|
for @{ $self->{keys} }; |
|
617
|
|
|
|
|
3288
|
|
47
|
|
|
|
|
|
|
|
48
|
|
|
|
|
|
|
# end marker |
49
|
617
|
|
|
|
|
1069
|
$string .= "PROPS-END$NL"; |
50
|
|
|
|
|
|
|
|
51
|
617
|
|
|
|
|
1268
|
return $string; |
52
|
|
|
|
|
|
|
} |
53
|
|
|
|
|
|
|
|
54
|
|
|
|
|
|
|
1; |
55
|
|
|
|
|
|
|
|
56
|
|
|
|
|
|
|
__END__ |