Monotone-Parent: 0f1a6cd04afde26d6c706fce6b58bc25810d6499
Monotone-Revision: 57e9aaa5f1ddeb0f4a50965813feeb13dfbe7be7 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2008-08-10T17:14:44 Monotone-Branch: ca.inverse.sogomaint-2.0.2
parent
eccfda3b8b
commit
48618c8fc2
|
@ -159,51 +159,58 @@ static NSString *commaSeparator = nil;
|
||||||
NSTimeInterval ti;
|
NSTimeInterval ti;
|
||||||
BOOL isTime;
|
BOOL isTime;
|
||||||
int val;
|
int val;
|
||||||
|
unichar c;
|
||||||
if (![self hasPrefix:@"P"]) {
|
|
||||||
NSLog(@"Cannot parse iCal duration value: '%@'", self);
|
|
||||||
return 0.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ti = 0.0;
|
ti = 0.0;
|
||||||
val = 0;
|
|
||||||
for (i = 1, len = [self length], isTime = NO; i < len; i++) {
|
if ([self hasPrefix:@"P"])
|
||||||
unichar c;
|
{
|
||||||
|
|
||||||
c = [self characterAtIndex:i];
|
|
||||||
if (c == 't' || c == 'T') {
|
|
||||||
isTime = YES;
|
|
||||||
val = 0;
|
val = 0;
|
||||||
continue;
|
|
||||||
|
len = [self length];
|
||||||
|
isTime = NO;
|
||||||
|
|
||||||
|
for (i = 1; i < len; i++)
|
||||||
|
{
|
||||||
|
c = [self characterAtIndex: i];
|
||||||
|
if (c == 't' || c == 'T')
|
||||||
|
{
|
||||||
|
isTime = YES;
|
||||||
|
val = 0;
|
||||||
|
}
|
||||||
|
else if (isdigit (c))
|
||||||
|
val = (val * 10) + (c - 48);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch (c)
|
||||||
|
{
|
||||||
|
case 'W': /* week */
|
||||||
|
ti += (val * 7 * 24 * 60 * 60);
|
||||||
|
break;
|
||||||
|
case 'D': /* day */
|
||||||
|
ti += (val * 24 * 60 * 60);
|
||||||
|
break;
|
||||||
|
case 'H': /* hour */
|
||||||
|
ti += (val * 60 * 60);
|
||||||
|
break;
|
||||||
|
case 'M': /* min */
|
||||||
|
ti += (val * 60);
|
||||||
|
break;
|
||||||
|
case 'S': /* sec */
|
||||||
|
ti += val;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
[self logWithFormat: @"cannot process duration unit: '%c'", c];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
val = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
if (isdigit(c)) {
|
NSLog(@"Cannot parse iCal duration value: '%@'", self);
|
||||||
val = (val * 10) + (c - 48);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (c) {
|
|
||||||
case 'W': /* week */
|
|
||||||
ti += (val * 7 * 24 * 60 * 60);
|
|
||||||
break;
|
|
||||||
case 'D': /* day */
|
|
||||||
ti += (val * 24 * 60 * 60);
|
|
||||||
break;
|
|
||||||
case 'H': /* hour */
|
|
||||||
ti += (val * 60 * 60);
|
|
||||||
break;
|
|
||||||
case 'M': /* min */
|
|
||||||
ti += (val * 60);
|
|
||||||
break;
|
|
||||||
case 'S': /* sec */
|
|
||||||
ti += val;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
[self logWithFormat: @"cannot process duration unit: '%c'", c];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
val = 0;
|
|
||||||
}
|
|
||||||
return ti;
|
return ti;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue