mirror of
https://github.com/darlinghq/darling-DSTools.git
synced 2024-11-26 21:40:39 +00:00
b1d05a7ba1
It's for Homebrew
106 lines
4.1 KiB
Objective-C
106 lines
4.1 KiB
Objective-C
/*
|
|
* Copyright (c) 2003 Apple Computer, Inc. All rights reserved.
|
|
*
|
|
* @APPLE_LICENSE_HEADER_START@
|
|
*
|
|
* This file contains Original Code and/or Modifications of Original Code
|
|
* as defined in and that are subject to the Apple Public Source License
|
|
* Version 2.0 (the 'License'). You may not use this file except in
|
|
* compliance with the License. Please obtain a copy of the License at
|
|
* http://www.opensource.apple.com/apsl/ and read it before using this
|
|
* file.
|
|
*
|
|
* The Original Code and all software distributed under the License are
|
|
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
|
|
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
|
|
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
|
|
* Please see the License for the specific language governing rights and
|
|
* limitations under the License.
|
|
*
|
|
* @APPLE_LICENSE_HEADER_END@
|
|
*/
|
|
|
|
/*!
|
|
* @header NSStringEscPath
|
|
*/
|
|
|
|
|
|
#import "NSStringEscPath.h"
|
|
|
|
@implementation NSString (NSStringEscPath)
|
|
|
|
+ (NSString *)escapablePathFromArray:(NSArray *)inArray
|
|
{
|
|
NSString *returnValue = nil;
|
|
|
|
if( [inArray count] )
|
|
{
|
|
NSEnumerator *pathEnum = [inArray objectEnumerator];
|
|
NSString *value = nil;
|
|
|
|
// preflight with first value
|
|
returnValue = [[pathEnum nextObject] escapedString];
|
|
|
|
while( value = [pathEnum nextObject] ) {
|
|
returnValue = [returnValue stringByAppendingString: @"/"];
|
|
returnValue = [returnValue stringByAppendingString: [value escapedString]];
|
|
}
|
|
}
|
|
return returnValue;
|
|
}
|
|
|
|
- (NSArray *)unescapedPathComponents
|
|
{
|
|
NSMutableArray *newComponents = [NSMutableArray array];
|
|
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
|
NSMutableString *workingString = [NSMutableString stringWithString: self];
|
|
|
|
// unescape everything so we have good components that we can pass around without worrying
|
|
[workingString replaceOccurrencesOfString: @"\\/" withString:@"%2f" options:NSLiteralSearch range:NSMakeRange(0,[workingString length])];
|
|
[workingString replaceOccurrencesOfString: @"\\\\" withString:@"%5c" options:NSLiteralSearch range:NSMakeRange(0,[workingString length])];
|
|
[workingString replaceOccurrencesOfString: @"\\" withString:@"" options:NSLiteralSearch range:NSMakeRange(0,[workingString length])];
|
|
|
|
NSArray *components = [workingString pathComponents];
|
|
NSEnumerator *compEnum = [components objectEnumerator];
|
|
NSString *component;
|
|
|
|
while( component = [compEnum nextObject] )
|
|
{
|
|
[newComponents addObject: [component stringByReplacingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
|
|
}
|
|
|
|
[pool release];
|
|
|
|
return newComponents;
|
|
}
|
|
|
|
- (NSString *)unescapedString
|
|
{
|
|
NSMutableString *workingString = [[self mutableCopy] autorelease];
|
|
|
|
[workingString replaceOccurrencesOfString: @"\\/" withString:@"%2f" options:NSLiteralSearch range:NSMakeRange(0,[workingString length])];
|
|
[workingString replaceOccurrencesOfString: @"\\\\" withString:@"%5c" options:NSLiteralSearch range:NSMakeRange(0,[workingString length])];
|
|
[workingString replaceOccurrencesOfString: @"\\" withString:@"" options:NSLiteralSearch range:NSMakeRange(0,[workingString length])];
|
|
|
|
return [workingString stringByReplacingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
|
|
}
|
|
|
|
- (NSString *)escapedString
|
|
{
|
|
NSMutableString *workingString = [[self mutableCopy] autorelease];
|
|
|
|
[workingString replaceOccurrencesOfString: @"\\" withString:@"\\\\" options:NSLiteralSearch range:NSMakeRange(0,[workingString length])];
|
|
[workingString replaceOccurrencesOfString: @"/" withString: @"\\/" options:NSLiteralSearch range:NSMakeRange(0,[workingString length])];
|
|
[workingString replaceOccurrencesOfString: @" " withString: @"\\ " options:NSLiteralSearch range:NSMakeRange(0,[workingString length])];
|
|
|
|
return workingString;
|
|
}
|
|
|
|
- (NSString *)urlEncoded
|
|
{
|
|
return [self stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
|
|
}
|
|
|
|
@end
|