27
#import "Foundation/NSValue.h"
29
28
#import "GNUstepBase/NSURL+GNUstepBase.h"
30
@implementation NSURL (GNUstepBaseAdditions)
32
- (id) initWithScheme: (NSString*)scheme
34
password: (NSString*)password
37
fullPath: (NSString*)fullPath
38
parameterString: (NSString*)parameterString
39
query: (NSString*)query
40
fragment: (NSString*)fragment
42
NSMutableString *urlString;
45
urlString = [scheme mutableCopy];
46
[urlString appendString: @"://"];
47
if ([user length] > 0 || [password length] > 0)
49
if (nil == (s = user)) s = @"";
50
[urlString appendString:
51
[s stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
52
[urlString appendString: @":"];
53
if (nil == (s = password)) s = @"";
54
[urlString appendString:
55
[s stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
56
[urlString appendString: @"@"];
58
if ([host length] > 0)
60
[urlString appendString:
61
[host stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
63
if ([port intValue] > 0)
65
[urlString appendString: @":"];
66
[urlString appendFormat: @"%u", [port intValue]];
69
if (nil == (s = fullPath)) s = @"";
70
if ([s hasPrefix: @"/"] == NO)
72
[urlString appendString: @"/"];
74
[urlString appendString:
75
[s stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
77
if ([parameterString length] > 0)
79
[urlString appendString: @";"];
80
[urlString appendString: parameterString];
83
if ([query length] > 0)
85
[urlString appendString: @"?"];
86
[urlString appendString: query];
89
if ([fragment length] > 0)
91
[urlString appendString: @"#"];
92
[urlString appendString: fragment];
95
self = [self initWithString: urlString];
31
102
@implementation NSURL (GNUstepBase)
103
/* For efficiency this is built in to the main library.
32
105
- (NSString*) fullPath