| author | Zachary West <zacw@adium.im> |
| Thu Nov 19 21:12:23 2009 -0500 (2009-11-19) | |
| changeset 2768 | 85857106a45e |
| parent 776 | 243d6da010b2 |
| child 2914 | 597b3a38a84a |
| permissions | -rw-r--r-- |
| zacw@776 | 1 |
// |
| zacw@776 | 2 |
// MGTwitterStatusesParser.m |
| zacw@776 | 3 |
// MGTwitterEngine |
| zacw@776 | 4 |
// |
| zacw@776 | 5 |
// Created by Matt Gemmell on 11/02/2008. |
| zacw@776 | 6 |
// Copyright 2008 Instinctive Code. |
| zacw@776 | 7 |
// |
| zacw@776 | 8 |
|
| zacw@776 | 9 |
#import "MGTwitterStatusesParser.h" |
| zacw@776 | 10 |
|
| zacw@776 | 11 |
|
| zacw@776 | 12 |
@implementation MGTwitterStatusesParser |
| zacw@776 | 13 |
|
| zacw@776 | 14 |
|
| zacw@776 | 15 |
#pragma mark NSXMLParser delegate methods |
| zacw@776 | 16 |
|
| zacw@776 | 17 |
|
| zacw@776 | 18 |
- (void)parser:(NSXMLParser *)theParser didStartElement:(NSString *)elementName |
| zacw@776 | 19 |
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName |
| zacw@776 | 20 |
attributes:(NSDictionary *)attributeDict |
| zacw@776 | 21 |
{ |
| zacw@776 | 22 |
//NSLog(@"Started element: %@ (%@)", elementName, attributeDict); |
| zacw@776 | 23 |
[self setLastOpenedElement:elementName]; |
| zacw@776 | 24 |
|
| zacw@776 | 25 |
if ([elementName isEqualToString:@"status"]) { |
| zacw@776 | 26 |
// Make new entry in parsedObjects. |
| zacw@776 | 27 |
NSMutableDictionary *newNode = [NSMutableDictionary dictionaryWithCapacity:0]; |
| zacw@776 | 28 |
[parsedObjects addObject:newNode]; |
| zacw@2768 | 29 |
currentNode = newNode; |
| zacw@776 | 30 |
} else if ([elementName isEqualToString:@"user"]) { |
| zacw@776 | 31 |
// Add a 'user' dictionary to current node. |
| zacw@776 | 32 |
NSMutableDictionary *newNode = [NSMutableDictionary dictionaryWithCapacity:0]; |
| zacw@776 | 33 |
[currentNode setObject:newNode forKey:elementName]; |
| zacw@776 | 34 |
currentNode = newNode; |
| zacw@2768 | 35 |
} else if ([elementName isEqualToString:@"retweeted_status"]) { |
| zacw@2768 | 36 |
// Add a 'retweeted_status' dictionary to current node. |
| zacw@2768 | 37 |
NSMutableDictionary *newNode = [NSMutableDictionary dictionaryWithCapacity:0]; |
| zacw@2768 | 38 |
[currentNode setObject:newNode forKey:elementName]; |
| zacw@2768 | 39 |
currentNode = newNode; |
| zacw@776 | 40 |
} else if (currentNode) { |
| zacw@776 | 41 |
// Create relevant name-value pair. |
| zacw@776 | 42 |
[currentNode setObject:[NSMutableString string] forKey:elementName]; |
| zacw@776 | 43 |
} |
| zacw@776 | 44 |
} |
| zacw@776 | 45 |
|
| zacw@776 | 46 |
|
| zacw@776 | 47 |
- (void)parser:(NSXMLParser *)theParser foundCharacters:(NSString *)characters |
| zacw@776 | 48 |
{ |
| zacw@776 | 49 |
//NSLog(@"Found characters: %@", characters); |
| zacw@776 | 50 |
// Append found characters to value of lastOpenedElement in currentNode. |
| zacw@776 | 51 |
if (lastOpenedElement && currentNode) { |
| zacw@776 | 52 |
[[currentNode objectForKey:lastOpenedElement] appendString:characters]; |
| zacw@776 | 53 |
} |
| zacw@776 | 54 |
} |
| zacw@776 | 55 |
|
| zacw@776 | 56 |
|
| zacw@776 | 57 |
- (void)parser:(NSXMLParser *)theParser didEndElement:(NSString *)elementName |
| zacw@776 | 58 |
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName |
| zacw@776 | 59 |
{ |
| zacw@776 | 60 |
[super parser:theParser didEndElement:elementName namespaceURI:namespaceURI qualifiedName:qName]; |
| zacw@776 | 61 |
|
| zacw@2768 | 62 |
if ([elementName isEqualToString:@"user"] || [elementName isEqualToString:@"retweeted_status"]) { |
| zacw@776 | 63 |
currentNode = [parsedObjects lastObject]; |
| zacw@776 | 64 |
} else if ([elementName isEqualToString:@"status"]) { |
| zacw@776 | 65 |
[self addSource]; |
| zacw@776 | 66 |
currentNode = nil; |
| zacw@776 | 67 |
} |
| zacw@776 | 68 |
} |
| zacw@776 | 69 |
|
| zacw@776 | 70 |
|
| zacw@776 | 71 |
@end |