ЙажаСценарий / Говнокод #4813 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 increazon, (Updated )

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

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

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

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

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

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

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

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8