blib/lib/to_char.pl | |||
---|---|---|---|
Criterion | Covered | Total | % |
statement | 37 | 108 | 34.2 |
branch | 8 | 52 | 15.3 |
condition | 1 | 5 | 20.0 |
subroutine | 7 | 24 | 29.1 |
pod | 1 | 24 | 4.1 |
total | 54 | 213 | 25.3 |
line | stmt | bran | cond | sub | pod | time | code |
---|---|---|---|---|---|---|---|
1 | my @timevals; | ||||||
2 | |||||||
3 | return &to_char(@_) if (scalar(@_)); #ADDED 2003/12/15 TO MAKE INTO A GENERAL CALLABLE FUNCTION! | ||||||
4 | |||||||
5 | my ($s) = $_[0]; | ||||||
6 | my ($fmt) = $_[1] || 'dd-MON-rr'; | ||||||
7 | |||||||
8 | $err = ''; | ||||||
9 | $rtnTime = ''; | ||||||
10 | |||||||
11 | @timevals = localtime($s); | ||||||
12 | |||||||
13 | foreach my $f (qw(month mon Month Mon MONTH MON)) | ||||||
14 | { | ||||||
15 | $fmt =~ s/($f)/&{$f}($1)/eg; | ||||||
16 | last if ($err) ; | ||||||
17 | } | ||||||
18 | foreach my $f (qw(ddd dd yyyy yy hh24 hh mi mm sssss ss rm rr)) | ||||||
19 | { | ||||||
20 | $fmt =~ s/($f)/&{$f}($1)/egi; | ||||||
21 | last if ($err) ; | ||||||
22 | } | ||||||
23 | |||||||
24 | #$fmt =~ s/\b(a)([\.m]?)\b/&a($1).$2/egi; | ||||||
25 | $fmt =~ s/\b([aApP])([\.[mM]?)\b/&{$1}.$2/eg; | ||||||
26 | |||||||
27 | $fmt =~ s/([0\$BSCL]*)([9D\.\,GV]+)(\s*CR|PR|EEEE)/&fmt9($1,$2,$3)/eg; | ||||||
28 | |||||||
29 | $rtnTime = $fmt; | ||||||
30 | |||||||
31 | |||||||
32 | sub fmt9 | ||||||
33 | { | ||||||
34 | 0 | 0 | 0 | 0 | my ($pre, $val, $suf) = (@_); | ||
35 | 0 | 0 | my $l = length($val) + 1; | ||||
36 | 0 | 0 | my $dec; | ||||
37 | 0 | 0 | 0 | $dec = length($1) if ($val =~ /[\.DV](\d+)/i); | |||
38 | 0 | 0 | my $fmtstr = '%'; | ||||
39 | 0 | 0 | $fmtstr .= $l; | ||||
40 | 0 | 0 | 0 | $fmtstr .= '.'.$dec if ($dec); | |||
41 | 0 | 0 | 0 | if ($suf =~ /(E)EEE/i) | |||
42 | { | ||||||
43 | 0 | 0 | $fmtstr .= $1; | ||||
44 | } | ||||||
45 | else | ||||||
46 | { | ||||||
47 | 0 | 0 | $fmtstr .= 'f'; | ||||
48 | } | ||||||
49 | 0 | 0 | my $t = sprintf($fmtstr, $s); | ||||
50 | 0 | 0 | 0 | $t =~ s/\s(\S)/\$$1/ if ($pre =~ /[C\$]/i); | |||
51 | 0 | 0 | 0 | $t =~ s/(\s)([^\s\-])/$1\+$2/ if ($pre =~ /S/i); | |||
52 | 0 | 0 | 0 | 0 | $t =~ s/[0\.\,]/ /g if ($pre =~ /B/i && $t =~ /^[\s0\.\+\-\,]+$/); | ||
53 | 0 | 0 | 0 | $t =~ s/([\d\.\+\-]+)/ | |||
54 | 0 | 0 | my ($one) = $1; | ||||
55 | 0 | 0 | $one *= 10 ** $dec; | ||||
56 | 0 | 0 | $one; | ||||
57 | /e if ($val =~ /V/i); | ||||||
58 | 0 | 0 | 0 | if ($suf =~ /(\s*cr)/i) | |||
0 | |||||||
59 | { | ||||||
60 | 0 | 0 | my ($one) = $1; | ||||
61 | 0 | 0 | $t =~ s/\-(\S+)/$1$one/; | ||||
62 | } | ||||||
63 | elsif ($suf =~ /pr/i) | ||||||
64 | { | ||||||
65 | 0 | 0 | $t =~ s/(\-)(\S+)(\s?)/\<$2\>/; | ||||
66 | 0 | 0 | $t =~ s/\$\\<\$/; | ||||
67 | } | ||||||
68 | 0 | 0 | return $t; | ||||
69 | } | ||||||
70 | |||||||
71 | sub month | ||||||
72 | { | ||||||
73 | 0 | 0 | 0 | 0 | my @months = ( | ||
74 | 'january ', 'february ', 'march ', 'april ', | ||||||
75 | 'may ', 'june ', 'july ', 'august ', | ||||||
76 | 'september', 'october ', 'november ', 'december '); | ||||||
77 | |||||||
78 | 0 | 0 | return $months[$timevals[4]]; | ||||
79 | } | ||||||
80 | |||||||
81 | sub Month | ||||||
82 | { | ||||||
83 | 0 | 0 | 0 | 0 | my @months = ( | ||
84 | 'January ', 'February ', 'March ', 'April ', | ||||||
85 | 'May ', 'June ', 'July ', 'August ', | ||||||
86 | 'September', 'October ', 'November ', 'December '); | ||||||
87 | |||||||
88 | 0 | 0 | my $indx = shift; | ||||
89 | 0 | 0 | return $months[$timevals[4]]; | ||||
90 | } | ||||||
91 | |||||||
92 | sub MONTH | ||||||
93 | { | ||||||
94 | 0 | 0 | 0 | 0 | my @months = ( | ||
95 | 'JANUARY ', 'FEBRUARY ', 'MARCH ', 'APRIL ', | ||||||
96 | 'MAY ', 'JUNE ', 'JULY ', 'AUGUST ', | ||||||
97 | 'SEPTEMBER', 'OCTOBER ', 'NOVEMBER ', 'DECEMBER '); | ||||||
98 | |||||||
99 | 0 | 0 | my $indx = shift; | ||||
100 | 0 | 0 | return $months[$timevals[4]]; | ||||
101 | } | ||||||
102 | |||||||
103 | sub mon | ||||||
104 | { | ||||||
105 | 0 | 0 | 0 | 0 | my @months = ('jan', 'feb', 'mar', 'apr', 'may', 'jun', | ||
106 | 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'); | ||||||
107 | |||||||
108 | 0 | 0 | my $indx = shift; | ||||
109 | 0 | 0 | return $months[$timevals[4]]; | ||||
110 | } | ||||||
111 | |||||||
112 | sub Mon | ||||||
113 | { | ||||||
114 | 1 | 1 | 0 | 3 | my @months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', | ||
115 | 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'); | ||||||
116 | |||||||
117 | 1 | 3 | my $indx = shift; | ||||
118 | 1 | 5 | return $months[$timevals[4]]; | ||||
119 | } | ||||||
120 | |||||||
121 | sub MON | ||||||
122 | { | ||||||
123 | 0 | 0 | 0 | 0 | my @months = ('JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', | ||
124 | 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'); | ||||||
125 | |||||||
126 | 0 | 0 | my $indx = shift; | ||||
127 | 0 | 0 | return $months[$timevals[4]]; | ||||
128 | } | ||||||
129 | |||||||
130 | sub rm | ||||||
131 | { | ||||||
132 | 0 | 0 | 0 | 0 | my @months = ('i', 'ii', 'iii', 'iv', 'v', 'vi', | ||
133 | 'vii', 'viii', 'ix', 'x', 'xi', 'xii'); | ||||||
134 | |||||||
135 | 0 | 0 | my $indx = shift; | ||||
136 | 0 | 0 | return $months[$timevals[4]]; | ||||
137 | } | ||||||
138 | |||||||
139 | sub mm | ||||||
140 | { | ||||||
141 | 1 | 1 | 0 | 2 | my ($t) = $timevals[4] + 1; | ||
142 | 1 | 50 | 9 | $t = '0' . $t if ($t < 10); | |||
143 | 1 | 5 | return $t; | ||||
144 | } | ||||||
145 | |||||||
146 | sub yyyy | ||||||
147 | { | ||||||
148 | 1 | 1 | 0 | 6 | return $timevals[5] + 1900; | ||
149 | } | ||||||
150 | |||||||
151 | sub yy | ||||||
152 | { | ||||||
153 | 0 | 0 | 0 | 0 | return &rr; | ||
154 | } | ||||||
155 | |||||||
156 | sub rr | ||||||
157 | { | ||||||
158 | 0 | 0 | 0 | 0 | my ($t) = $timevals[5]; | ||
159 | 0 | 0 | 0 | $t -= 100 if ($t >= 100); | |||
160 | 0 | 0 | 0 | $t = '0' . $t if ($t < 10); | |||
161 | 0 | 0 | return $t; | ||||
162 | } | ||||||
163 | |||||||
164 | #sub ddd | ||||||
165 | #{ | ||||||
166 | # return $mday; | ||||||
167 | #} | ||||||
168 | |||||||
169 | sub dd | ||||||
170 | { | ||||||
171 | 1 | 1 | 0 | 3 | my ($t) = $timevals[3]; | ||
172 | 1 | 50 | 4 | $t = '0' . $t if ($t < 10); | |||
173 | 1 | 4 | return $t; | ||||
174 | } | ||||||
175 | |||||||
176 | sub hh24 | ||||||
177 | { | ||||||
178 | 0 | 0 | 0 | 0 | my ($t) = $timevals[2]; | ||
179 | 0 | 0 | 0 | $t = '0' . $t if ($t < 10); | |||
180 | 0 | 0 | return $t; | ||||
181 | } | ||||||
182 | |||||||
183 | sub hh | ||||||
184 | { | ||||||
185 | 1 | 1 | 0 | 2 | my ($t) = $timevals[2]; | ||
186 | 1 | 50 | 5 | $t -= 12 if ($t >= 13); | |||
187 | 1 | 50 | 4 | $t += 12 unless ($t); | |||
188 | 1 | 50 | 3 | $t = '0' . $t if ($t < 10); | |||
189 | 1 | 4 | return $t; | ||||
190 | } | ||||||
191 | |||||||
192 | sub a | ||||||
193 | { | ||||||
194 | 0 | 0 | 1 | 0 | my ($t) = $timevals[2]; | ||
195 | 0 | 0 | 0 | return 'a' if ($t < 12); | |||
196 | 0 | 0 | return 'p'; | ||||
197 | } | ||||||
198 | |||||||
199 | sub p | ||||||
200 | { | ||||||
201 | 0 | 0 | 0 | 0 | my ($t) = $timevals[2]; | ||
202 | 0 | 0 | 0 | return 'a' if ($t < 12); | |||
203 | 0 | 0 | return 'p'; | ||||
204 | } | ||||||
205 | |||||||
206 | sub A | ||||||
207 | { | ||||||
208 | 0 | 0 | 0 | 0 | my ($t) = $timevals[2]; | ||
209 | 0 | 0 | 0 | return 'A' if ($t < 12); | |||
210 | 0 | 0 | return 'P'; | ||||
211 | } | ||||||
212 | |||||||
213 | sub P | ||||||
214 | { | ||||||
215 | 0 | 0 | 0 | 0 | my ($t) = $timevals[2]; | ||
216 | 0 | 0 | 0 | return 'A' if ($t < 12); | |||
217 | 0 | 0 | return 'P'; | ||||
218 | } | ||||||
219 | |||||||
220 | sub mi | ||||||
221 | { | ||||||
222 | 0 | 0 | 0 | 0 | my ($t) = $timevals[1]; | ||
223 | 0 | 0 | 0 | $t = '0' . $t if ($t < 10); | |||
224 | 0 | 0 | return $t; | ||||
225 | } | ||||||
226 | |||||||
227 | sub sssss | ||||||
228 | { | ||||||
229 | 0 | 0 | 0 | 0 | return (($timevals[2]*3600) + ($timevals[1]*60) + $timevals[0]); | ||
230 | } | ||||||
231 | |||||||
232 | sub ss | ||||||
233 | { | ||||||
234 | 1 | 1 | 0 | 2 | my ($t) = $timevals[0]; | ||
235 | 1 | 50 | 3 | $t = '0' . $t if ($t < 10); | |||
236 | 1 | 16 | return $t; | ||||
237 | } | ||||||
238 | |||||||
239 | sub ddd | ||||||
240 | { | ||||||
241 | 0 | 0 | 0 | 0 | my ($t) = $timevals[7] + 1; | ||
242 | 0 | 0 | 0 | $t = '0' . $t if ($t < 10); | |||
243 | 0 | 0 | return $t; | ||||
244 | } | ||||||
245 | |||||||
246 | sub to_char | ||||||
247 | { | ||||||
248 | 1 | 1 | 0 | 3 | my ($s) = $_[0]; | ||
249 | 1 | 50 | 4 | my ($fmt) = $_[1] || 'dd-MON-rr'; | |||
250 | #print " TO_CHAR($s|$fmt)=\n"; |
||||||
251 | 1 | 2 | $err = ''; | ||||
252 | 1 | 2 | $rtnTime = ''; | ||||
253 | |||||||
254 | 1 | 33 | @timevals = localtime($s); | ||||
255 | #print " timevals=".join('|',@timevals)."=\n"; |
||||||
256 | 1 | 3 | foreach my $f (qw(month mon Month Mon MONTH MON)) | ||||
257 | { | ||||||
258 | 6 | 54 | $fmt =~ s/($f)/&{$f}($1)/eg; | ||||
1 | 2 | ||||||
1 | 5 | ||||||
259 | 6 | 50 | 19 | last if ($err) ; | |||
260 | } | ||||||
261 | 1 | 3 | foreach my $f (qw(ddd dd yyyy yy hh24 hh mi mm sssss ss rm rr)) | ||||
262 | { | ||||||
263 | 12 | 83 | $fmt =~ s/($f)/&{$f}($1)/egi; | ||||
5 | 15 | ||||||
5 | 14 | ||||||
264 | 12 | 50 | 33 | last if ($err) ; | |||
265 | } | ||||||
266 | |||||||
267 | #$fmt =~ s/\b(a)([\.m]?)\b/&a($1).$2/egi; | ||||||
268 | 1 | 5 | $fmt =~ s/\b([aApP])([\.[mM]?)\b/&{$1}.$2/eg; | ||||
0 | 0 | ||||||
0 | 0 | ||||||
269 | |||||||
270 | 1 | 11 | $fmt =~ s/([0\$BSCL]*)([9D\.\,GV]+)(\s*CR|PR|EEEE)/&fmt9($1,$2,$3)/eg; | ||||
0 | 0 | ||||||
271 | |||||||
272 | 1 | 3 | $rtnTime = $fmt; | ||||
273 | #print " tochar returns =$rtnTime=\n"; |
||||||
274 | 1 | 39 | return $rtnTime; | ||||
275 | } | ||||||
276 | |||||||
277 | 1 |