File Coverage

blib/lib/Data/SIprefixes/hecto.pm
Criterion Covered Total %
statement 12 65 18.4
branch 0 22 0.0
condition n/a
subroutine 4 10 40.0
pod 6 6 100.0
total 22 103 21.3


line stmt bran cond sub pod time code
1             package Data::SIprefixes::hecto;
2              
3 1     1   21168 use strict;
  1         2  
  1         25  
4 1     1   5 use warnings;
  1         2  
  1         26  
5 1     1   785 use bignum;
  1         8122  
  1         6  
6 1     1   65444 use base 'Error::Helper';
  1         3  
  1         809  
7              
8             =head1 NAME
9              
10             Data::SIprefixes::hecto - This provides hecto matching for Data::SIprefixes.
11              
12             =head1 VERSION
13              
14             Version 0.0.0
15              
16             =cut
17              
18             our $VERSION = '0.0.0';
19              
20             =head1 SYNOPSIS
21              
22             use Data::SIprefixes::hecto;
23            
24             my $prefix=Data::SIprefixes::hecto->new;
25              
26             my $origMeasure='hectometer';
27            
28             my $measure=$prefix->longMatch( $origMeasure );
29             my $long;
30             if ( $prefix->error ){
31             warn('error:'.$foo->error.': '.$foo->errorString);
32             }elseif( ! defined( $measure ) ){
33            
34             $measure=$prefix->shortMatch( $origMeasure );
35            
36             }else{
37             $long=1;
38             }
39              
40             =head1 METHODS
41              
42             =head2 new
43              
44             This initiates the object.
45              
46             my $prefix=$Data::SIprefixes::hecto->new;
47              
48             =cut
49              
50             sub new {
51 0     0 1   my $string=$_[1];
52              
53 0           my $self={
54             perror=>undef,
55             error=>undef,
56             errorString=>'',
57             fromBase=>0.01,
58             toBase=>100,
59             };
60 0           bless $self;
61            
62 0           return $self;
63             }
64              
65             =head2 fromBase
66              
67             Returns the number needed to to multiple it by to get from the unprefixed
68             measure to the prefixed measure.
69              
70             my $fromBase=$prefix->fromBase;
71              
72             =cut
73              
74             sub fromBase{
75 0     0 1   my $self=$_[0];
76              
77 0 0         if ( ! $self->errorblank ){
78 0           $self->warnString('Failed to blank the previous error');
79             }
80              
81 0           return $self->fromBase;
82             }
83              
84             =head2 longMatch
85              
86             Matches long SI prefixed measures.
87              
88             A match returns the measure with out the SI prefix, which will be ''
89             if no measure is specified.
90              
91             my $measure=$prefix->longMatch( $origMeasure );
92             if ( $prefix->error ){
93             warn('error:'.$foo->error.': '.$foo->errorString);
94             }
95              
96             =cut
97              
98             sub longMatch{
99 0     0 1   my $self=$_[0];
100 0           my $measure=$_[1];
101              
102 0 0         if ( ! $self->errorblank ){
103 0           $self->warnString('Failed to blank the previous error');
104             }
105              
106 0 0         if ( ! defined( $measure ) ){
107 0           $self->{error}=1;
108 0           $self->{errorString}='No measure defined';
109 0           $self->warn;
110 0           return undef;
111             }
112              
113 0 0         if ( $measure=~/^hecto/ ){
114 0           my $origMeasure=$measure;
115 0           $measure=~s/^hecto//g;
116              
117 0 0         if ( $measure =~ /^ / ){
118 0           $self->{error}=2;
119 0           $self->{errorString}='Space found after prefix, /^exa/, in "'.$origMeasure.'"' ;
120 0           $self->warn;
121 0           return undef;
122             }
123              
124 0           return $measure;
125             }
126              
127 0           return undef;
128             }
129              
130             =head2 shortMatch
131              
132             Matches short SI prefixed measures.
133              
134             A match returns the measure with out the SI prefix, which will be ''
135             if no measure is specified.
136              
137             my $measure=$prefix->longMatch( $origMeasure );
138             if ( $prefix->error ){
139             warn('error:'.$foo->error.': '.$foo->errorString);
140             }
141              
142             =cut
143              
144             sub shortMatch{
145 0     0 1   my $self=$_[0];
146 0           my $measure=$_[1];
147              
148 0 0         if ( ! $self->errorblank ){
149 0           $self->warnString('Failed to blank the previous error');
150             }
151              
152 0 0         if ( ! defined( $measure ) ){
153 0           $self->{error}=1;
154 0           $self->{errorString}='No measure defined';
155 0           $self->warn;
156 0           return undef;
157             }
158              
159             #avoid possible collisions
160 0 0         if ( $measure eq 'henry' ){
161 0           return $measure;
162             }
163              
164 0 0         if ( $measure=~/^h/ ){
165 0           my $origMeasure=$measure;
166 0           $measure=~s/^h//g;
167              
168 0 0         if ( $measure =~ /^ / ){
169 0           $self->{error}=2;
170 0           $self->{errorString}='Space found after prefix, /^E/, in "'.$origMeasure.'"' ;
171 0           $self->warn;
172 0           return undef;
173             }
174              
175 0           return $measure;
176             }
177              
178 0           return undef;
179             }
180              
181             =head2 symbol
182              
183             This returns the symbol for the prefix.
184              
185             my $symbol=$prefix->symbol;
186              
187             =cut
188              
189             sub symbol{
190 0     0 1   return 'h';
191             }
192              
193             =head2 toBase
194              
195             Returns the number needed to to multiple it by to get from the prefixed measure
196             number to the unprefixed measure.
197              
198             my $toBase=$prefix->toBase;
199              
200             =cut
201              
202             sub toBase{
203 0     0 1   my $self=$_[0];
204              
205 0 0         if ( ! $self->errorblank ){
206 0           $self->warnString('Failed to blank the previous error');
207             }
208              
209 0           return $self->toBase;
210             }
211              
212             =head1 ERROR CODES
213              
214             =head2 1
215              
216             Nothing passed for a measure.
217              
218             =head2 2
219              
220             Space found after prefix.
221              
222             =head1 AUTHOR
223              
224             Zane C. Bowers-Hadley, C<< >>
225              
226             =head1 BUGS
227              
228             Please report any bugs or feature requests to C, or through
229             the web interface at L. I will be notified, and then you'll
230             automatically be notified of progress on your bug as I make changes.
231              
232              
233              
234              
235             =head1 SUPPORT
236              
237             You can find documentation for this module with the perldoc command.
238              
239             perldoc Data::SIprefixes::hecto
240              
241              
242             You can also look for information at:
243              
244             =over 4
245              
246             =item * RT: CPAN's request tracker (report bugs here)
247              
248             L
249              
250             =item * AnnoCPAN: Annotated CPAN documentation
251              
252             L
253              
254             =item * CPAN Ratings
255              
256             L
257              
258             =item * Search CPAN
259              
260             L
261              
262             =back
263              
264              
265             =head1 ACKNOWLEDGEMENTS
266              
267              
268             =head1 LICENSE AND COPYRIGHT
269              
270             Copyright 2012 Zane C. Bowers-Hadley.
271              
272             This program is free software; you can redistribute it and/or modify it
273             under the terms of either: the GNU General Public License as published
274             by the Free Software Foundation; or the Artistic License.
275              
276             See http://dev.perl.org/licenses/ for more information.
277              
278              
279             =cut
280              
281             1; # End of Data::SIprefixes::hecto