1. JavaScript / Говнокод #4813

    +145

    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
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    function parseHTML(text)
    {
        var t = text;
        var a = new Array();
    	var b = new Array();
        var cur = 0;
        var waiting_open_tag = true;
    	var last_cut = 0;
        for (var i = 0; i < t.length; i++)
        {
            cur = t.charAt(i);
            if (waiting_open_tag)
            {
                if (cur == '<')
    			{
    				a.push(t.substring(last_cut, i));
    				waiting_open_tag = false;
    				last_cut = i;
    			}
            }
    		else
    		{
                if (cur == '>')
    			{
    				a.push(t.substring(last_cut, i+1));
    				waiting_open_tag = true;
    				last_cut = i+1;
    			}
    		}
    		if (i == t.length-1)
    		{
    			a.push(t.substring(last_cut, i+1));
    		}
    
        }
    	// now reparse DOT"."
    	for (i = 0; i < a.length; i++)
    	{
    		y = a[i];
    		last_cut = 0;
    		for (z = 0; z < y.length; z++)
    		{
    			cur = y.charAt(z);
    			if (z == 0)
    			{
    				if ((cur == '<') || (cur == '&') || (cur == '\n'))
    				{
    					z = y.length + 981;
    					b.push(y.substring(last_cut, z+1));
    					continue;
    				}
    			}
    			if (cur == '.')
    			{
    				b.push(y.substring(last_cut, z+1));
    				last_cut = z+1;
    			}
    			if (z == y.length-1)
    			{
    				b.push(y.substring(last_cut, z+1));
    			}
    		}
    	}
        return b;
    }

    Эта функция разбивает строку на элементы массива. Граница разделения - это HTML tags ( < >) и точка (.)
    Функция сделана для подготовки текста к автоматическому переводу в Гугле - кто работал тот знает что запихнув большую строку ничего не получите.
    Я уже знаю ваши сопливые комментарии: RegExp. Собственно по этому это можно считать говнокодом ибо изобретен велосипед (но такого велосипеда в интернете нет). Ну а кто не Noob, прошу предоставить рабочий RegExp.

    Запостил: increazon, 02 Декабря 2010

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

    • оо, автомат написали)))
      молодец.

      правда, 981 смушает.

      RegExp тут непричем: парсинг надо делать именно автоматом, а не через призму регекспов
      Ответить
      • показать все, что скрыто981 / 100 = 9.81 - сила притяжения земли. Вижу вы в физике не очень сильны. Кстати этот автомат неплохо переводит русский кусок HTML на украинский. Вот только не надо долгих предложений. По-этому лучше еще доделать разбивку, если превышает какое-то количество слов.
        Ответить
        • Я-то думал что 981 это год, когда Мешко I овладел Червленой Русью.
          Ответить
          • А я думал, что www.981.ru - это сайт коммерческой недвижимости.
            Мне кажется, этот говнокод - размещение продукта.
            Ответить
    • Контекст: "Я за вас свою работу делать не буду!"
      Ответить
    • Это говнокод или клуб помощи студентам?
      Ответить
      • +1 я бы за пиво такой код не писал! нито чтоб за оценку)))
        Ответить
      • это инкрезон, он у нас особенный
        Ответить
      • показать все, что скрытоНу вы гоните!!!! Я уже давно не студент. Этот код интегрирован в визульный редактор CuteEditor (который я недавно крякнул, теперь лицензия у меня до 2099 года). Так вот я пишу русский текст, а потом единым нажатием кнопки делаю перевод. За пару минут у меня в 2 больше материала. Пускай админ не считает что я рекламируюсь, просто показываю где это работает http://apokalipsis-2012.ru/
        Ответить
        • инкрезончик вернулся, блудный сукин сын
          >Я уже давно не студент
          знаем-знаем - школоло.

          >который я недавно крякнул
          школоло-нищеброд

          >нажатием кнопки
          школоло-нищеброд-guiдрочер

          >показываю где это работает http://apokalipsis-2012.ru/
          оказывается, ты и в жизни такой же дурной..
          ну и как успехи? сотону призвал? али кого посерьезней?
          Ответить
    • Не, ну круто, только зачем сюда выложили?
      Ответить

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