1. Objective C / Говнокод #10273

    −82

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    @try 
    	{
    		if ([[NSThread currentThread] isCancelled]) // Поток мог быть остановлен, пока мы где-то стояли на lock'е
    			return nil;
    
    		
    		// парсим html-строку в DOM
            viewData.body = [[viewData.body componentsSeparatedByString: @"<tab"] componentsJoinedByString: @"<b"];
            viewData.body = [[viewData.body componentsSeparatedByString: @"</tab"] componentsJoinedByString: @"</b"];
    		
    		htmlDocPtr hdoc = htmlParseDoc((xmlChar*)[[NSString stringWithFormat:@"<div>%@</div>",viewData.body] UTF8String], "utf-8");
    		xdoc = [[NSXmlDoc alloc] initWithNode:hdoc];
    		
    		if ([[NSThread currentThread] isCancelled])
    			return nil;
    
    		
    		// Собираем форматированную строку
    		blockRanges = [[NSMutableArray alloc] init];
    		xmlNodePtr node = [xdoc selectNode:@"/html/body/div"].libxmlNode; // Работа напрямую с нодами во враппере не реализованна :(
    		parsedString = [[NSMutableAttributedString alloc] init];
    		[self parseTag:node string:parsedString blockRanges:blockRanges];
    		[xdoc release];
    		xdoc = nil;
    		
            viewData.body = [[viewData.body componentsSeparatedByString: @"<b"] componentsJoinedByString: @"<tab"];
            viewData.body = [[viewData.body componentsSeparatedByString: @"</b"] componentsJoinedByString: @"</tab"];
    		
            
    		if ([[NSThread currentThread] isCancelled])
    			return nil;

    Вот такой костыль по обходу бага в html-парсере libXml.

    Запостил: krypt, 15 Мая 2012

    Комментарии (0) RSS

    Добавить комментарий

    Ошибка компиляции комментария:
    1. Гости могут высказаться только в понедельник, среду, четверг или воскресение
    ava Семь раз отмерь — один отрежь, guest!
    А не использовать ли нам bbcode?
    • [b]жирный[/b] — жирный
    • [i]курсив[/i] — курсив
    • [u]подчеркнутый[/u] — подчеркнутый
    • [s]перечеркнутый[/s] — перечеркнутый
    • [blink]мигающий[/blink] — мигающий
    • [color=red]цвет[/color] — цвет (подробнее)
    • [size=20]размер[/size] — размер (подробнее)
    • [code=<language>]some code[/code] (подробнее)
    Проверочный код