File Coverage

blib/lib/Git/Wrapper/Plus/Support/RangeDictionary.pm
Criterion Covered Total %
statement 41 45 91.1
branch 3 6 50.0
condition n/a
subroutine 14 15 93.3
pod 4 4 100.0
total 62 70 88.5


line stmt bran cond sub pod time code
1 8     8   3675 use 5.006; # our
  8         18  
2 8     8   30 use strict;
  8         9  
  8         149  
3 8     8   27 use warnings;
  8         11  
  8         467  
4              
5             package Git::Wrapper::Plus::Support::RangeDictionary;
6              
7             our $VERSION = '0.004011';
8              
9             # ABSTRACT: A key -> range list mapping for support features
10              
11             our $AUTHORITY = 'cpan:KENTNL'; # AUTHORITY
12              
13 8     8   485 use Moo qw( has );
  8         9115  
  8         37  
14              
15              
16              
17              
18              
19              
20              
21              
22              
23              
24              
25              
26              
27              
28              
29              
30              
31             has 'dictionary' => ( is => ro =>, lazy => 1, builder => 1 );
32              
33             sub _build_dictionary {
34 13     13   256 return {};
35             }
36              
37             sub _dictionary_set {
38 118     118   4411 my ( $self, $name, $set_object ) = @_;
39 118         1824 $self->dictionary->{$name} = $set_object;
40 118         590 return $self;
41             }
42              
43             sub _dictionary_get {
44 153     153   199 my ( $self, $name ) = @_;
45 153 50       255 return unless $self->_dictionary_exists($name);
46 153         3138 return $self->dictionary->{$name};
47             }
48              
49             sub _dictionary_exists {
50 342     342   349 my ( $self, $name ) = @_;
51 342         6320 return exists $self->dictionary->{$name};
52             }
53              
54             sub _dictionary_ensure_item {
55 118     118   130 my ( $self, $name ) = @_;
56 118 50       181 return if $self->_dictionary_exists($name);
57 118         2784 require Git::Wrapper::Plus::Support::RangeSet;
58 118         1939 $self->_dictionary_set( $name, Git::Wrapper::Plus::Support::RangeSet->new() );
59 118         129 return;
60             }
61              
62             sub _dictionary_item_add_range_object {
63 0     0   0 my ( $self, $name, $range ) = @_;
64 0         0 $self->_dictionary_ensure_item($name);
65 0         0 $self->_dictionary_get($name)->add_range_object($range);
66 0         0 return;
67             }
68              
69              
70              
71              
72              
73              
74              
75              
76              
77              
78              
79              
80              
81              
82              
83              
84              
85              
86              
87              
88             sub add_range {
89 118     118 1 310 my ( $self, $name, @args ) = @_;
90 118         214 $self->_dictionary_ensure_item($name);
91 118         217 $self->_dictionary_get($name)->add_range(@args);
92 118         263 return;
93             }
94              
95              
96              
97              
98              
99              
100              
101              
102              
103              
104              
105              
106              
107             sub has_entry {
108 36     36 1 404 my ( $self, $name ) = @_;
109 36         149 return $self->_dictionary_exists($name);
110             }
111              
112              
113              
114              
115              
116              
117              
118              
119              
120              
121              
122             sub entries {
123 3     3 1 12 my ($self) = @_;
124 3         8 my (@entries) = sort keys %{ $self->dictionary };
  3         65  
125 3         40 return @entries;
126             }
127              
128              
129              
130              
131              
132              
133              
134              
135              
136              
137              
138              
139              
140             sub entry_supports {
141 35     35 1 4853 my ( $self, $name, $version_object ) = @_;
142 35 50       83 return unless $self->_dictionary_exists($name);
143 35         350 return $self->_dictionary_get($name)->supports_version($version_object);
144             }
145              
146 8     8   5207 no Moo;
  8         9  
  8         25  
147              
148             1;
149              
150             __END__