File Coverage

blib/lib/Git/Wrapper/Plus/Support/RangeDictionary.pm
Criterion Covered Total %
statement 45 49 91.8
branch 3 6 50.0
condition n/a
subroutine 15 16 93.7
pod 4 4 100.0
total 67 75 89.3


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