forked from veritech/CSSApply
/
CSSSelector.m
56 lines (49 loc) · 1.43 KB
/
CSSSelector.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//
// CSSSelector.m
// CSSSample
//
// Created by Sam Stewart on 7/16/11.
// Copyright 2011 Float:Right Ltd. All rights reserved.
//
#import "CSSSelector.h"
@interface CSSSelector ()
- (void)breakIntoSlugAndMain:(NSString*)selector;
@end
@implementation CSSSelector
@synthesize main, slug;
- (id)initWithSelector:(NSString *)selector {
self = [super init];
if (self) {
[self breakIntoSlugAndMain:selector];
}
return self;
}
/** Breaks into main url and slug.*/
- (void)breakIntoSlugAndMain:(NSString*)selector {
// find slug (start at the end of the string and stop when we find control character)
unichar control_chars[5] = {'.', '#', ' ', '>', ':'};
for (int i = [selector length]; i>=0; i--) {
unichar cur_char = [selector characterAtIndex:i];
for (int j = 0; j<5;i++) {
if (cur_char == control_chars[j]) {
NSRange range = NSMakeRange(i-1, i+j+1);
self.slug = [selector substringWithRange:range];
self.main = [selector substringToIndex:i];
return;
}
}
}
}
- (NSArray*)selectorComponents {
// just split on spaces..
return [[self description] componentsSeparatedByString:@" "];
}
- (NSString*)description {
return [NSString stringWithFormat:@"%@%@", main, slug];
}
- (void)dealloc {
[super dealloc];
[main release], main = nil;
[slug release], slug = nil;
}
@end