︙ | | | ︙ | |
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
* file.
*/
#include "config.h"
#import "OFString+PathAdditions.h"
#import "OFArray.h"
#import "OFFileURLHandler.h"
#import "OFOutOfRangeException.h"
int _OFString_PathAdditions_reference;
@implementation OFString (PathAdditions)
+ (OFString *)pathWithComponents: (OFArray *)components
|
|
|
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
* file.
*/
#include "config.h"
#import "OFString+PathAdditions.h"
#import "OFArray.h"
#import "OFFileURIHandler.h"
#import "OFOutOfRangeException.h"
int _OFString_PathAdditions_reference;
@implementation OFString (PathAdditions)
+ (OFString *)pathWithComponents: (OFArray *)components
|
︙ | | | ︙ | |
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
}
objc_autoreleasePoolPop(pool);
return @"";
}
components = [components objectsInRange:
OFRangeMake(0, components.count - 1)];
ret = [OFString pathWithComponents: components];
[ret retain];
objc_autoreleasePoolPop(pool);
return [ret autorelease];
}
|
|
|
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
}
objc_autoreleasePoolPop(pool);
return @"";
}
components = [components objectsInRange:
OFMakeRange(0, components.count - 1)];
ret = [OFString pathWithComponents: components];
[ret retain];
objc_autoreleasePoolPop(pool);
return [ret autorelease];
}
|
︙ | | | ︙ | |
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
|
done = false;
break;
}
if ([component isEqual: @"/"] &&
parent != nil && ![parent isEqual: @"/"]) {
[array removeObjectsInRange:
OFRangeMake(i - 1, 2)];
done = false;
break;
}
}
}
|
|
|
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
|
done = false;
break;
}
if ([component isEqual: @"/"] &&
parent != nil && ![parent isEqual: @"/"]) {
[array removeObjectsInRange:
OFMakeRange(i - 1, 2)];
done = false;
break;
}
}
}
|
︙ | | | ︙ | |
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
|
} else
return [self stringByAppendingFormat: @".%@", extension];
}
- (bool)of_isDirectoryPath
{
return ([self hasSuffix: @"/"] || [self hasSuffix: @":"] ||
[OFFileURLHandler of_directoryExistsAtPath: self]);
}
- (OFString *)of_pathToURLPathWithURLEncodedHost: (OFString **)URLEncodedHost
{
OFArray OF_GENERIC(OFString *) *components = self.pathComponents;
OFMutableString *ret = [OFMutableString string];
for (OFString *component in components) {
if (component.length == 0)
continue;
|
|
|
>
|
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
|
} else
return [self stringByAppendingFormat: @".%@", extension];
}
- (bool)of_isDirectoryPath
{
return ([self hasSuffix: @"/"] || [self hasSuffix: @":"] ||
[OFFileURIHandler of_directoryExistsAtPath: self]);
}
- (OFString *)of_pathToURIPathWithPercentEncodedHost:
(OFString **)percentEncodedHost
{
OFArray OF_GENERIC(OFString *) *components = self.pathComponents;
OFMutableString *ret = [OFMutableString string];
for (OFString *component in components) {
if (component.length == 0)
continue;
|
︙ | | | ︙ | |
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
|
}
[ret makeImmutable];
return ret;
}
- (OFString *)of_URLPathToPathWithURLEncodedHost: (OFString *)URLEncodedHost
{
OFString *path = self;
if (path.length > 1 && [path hasSuffix: @"/"])
path = [path substringToIndex: path.length - 1];
OFMutableArray OF_GENERIC(OFString *) *components;
|
|
>
|
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
|
}
[ret makeImmutable];
return ret;
}
- (OFString *)of_URIPathToPathWithPercentEncodedHost:
(OFString *)percentEncodedHost
{
OFString *path = self;
if (path.length > 1 && [path hasSuffix: @"/"])
path = [path substringToIndex: path.length - 1];
OFMutableArray OF_GENERIC(OFString *) *components;
|
︙ | | | ︙ | |
347
348
349
350
351
352
353
354
355
356
357
358
|
if ([component isEqual: @".."])
[components replaceObjectAtIndex: i withObject: @"/"];
}
return [OFString pathWithComponents: components];
}
- (OFString *)of_pathComponentToURLPathComponent
{
return self;
}
@end
|
|
|
349
350
351
352
353
354
355
356
357
358
359
360
|
if ([component isEqual: @".."])
[components replaceObjectAtIndex: i withObject: @"/"];
}
return [OFString pathWithComponents: components];
}
- (OFString *)of_pathComponentToURIPathComponent
{
return self;
}
@end
|