~jeanfrancois.roy/mpqkit/1.0b1

« back to all changes in this revision

Viewing changes to NSArrayListfileAdditions.m

  • Committer: bahamut
  • Date: 2007-04-03 01:12:37 UTC
  • Revision ID: svn-v4:08a27de9-96f8-0310-9aec-cd9f9b5b01a8:trunk:158
- svn refactor phase 2.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//
 
2
//  NSArrayAdditions.m
 
3
//  MPQKit
 
4
//
 
5
//  Created by Jean-François Roy on 13/10/2006.
 
6
//  Copyright 2006 MacStorm. All rights reserved.
 
7
//
 
8
 
 
9
#import "NSArrayListfileAdditions.h"
 
10
 
 
11
 
 
12
@implementation NSArray (ListfileAdditions)
 
13
 
 
14
+ (id)arrayWithListfileData:(NSData *)listfileData {
 
15
    NSParameterAssert(listfileData != nil);
 
16
    
 
17
    // What we are doing to do here is extract all the lines from stringData and add an entry for each of those lines
 
18
    NSMutableString *listfileString = [[NSMutableString alloc] initWithData:listfileData encoding:NSASCIIStringEncoding];
 
19
    [listfileString replaceOccurrencesOfString:@"\r\n" withString:@"\n" options:NSLiteralSearch | NSCaseInsensitiveSearch range:NSMakeRange(0, [listfileString length])];
 
20
    [listfileString replaceOccurrencesOfString:@"\r" withString:@"\n" options:NSLiteralSearch | NSCaseInsensitiveSearch range:NSMakeRange(0, [listfileString length])];
 
21
    
 
22
    NSArray *listfileArray = [listfileString componentsSeparatedByString:@"\n"];
 
23
    [listfileString release];
 
24
    return listfileArray;
 
25
}
 
26
 
 
27
@end
 
28
 
 
29
@implementation NSMutableArray (ListfileAdditions)
 
30
 
 
31
+ (id)arrayWithListfileData:(NSData *)listfileData {
 
32
    return [[[[self class] alloc] initWithListfileData:listfileData] autorelease];
 
33
}
 
34
 
 
35
- (id)initWithListfileData:(NSData *)listfileData {
 
36
    NSParameterAssert(listfileData != nil);
 
37
    
 
38
    NSArray *returnArray = [NSArray arrayWithListfileData:listfileData];
 
39
    self = [self initWithCapacity:[returnArray count]];
 
40
    [self setArray:returnArray];
 
41
    
 
42
    if ([[self lastObject] isEqualToString:@""]) [self removeLastObject];
 
43
    
 
44
    return self;
 
45
}
 
46
 
 
47
- (void)sortAndDeleteDuplicates {
 
48
    [self sortUsingSelector:@selector(caseInsensitiveCompare:)];
 
49
    
 
50
    if ([self count] > 1) {
 
51
        uint32_t i = 0;
 
52
        for (; i < [self count] - 1; i++) {
 
53
            if ([[self objectAtIndex:i] caseInsensitiveCompare:[self objectAtIndex:(i+1)]] == NSOrderedSame) {
 
54
                [self removeObjectAtIndex:i];
 
55
                i--;
 
56
            }
 
57
        }
 
58
    }
 
59
}
 
60
 
 
61
@end