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

    +158

    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
    var result = {success: true};
    	
    	var arr = sumParam(info, null, null, /<td[^>]+class="rate"[^>]*>([\s\S]*?)<\/td>/ig, replaceTagsAndSpaces, html_entity_decode);
    	//Доллар/Гривна
    	AnyBalance.trace(arr[0]);
    	AnyBalance.trace(arr[1]);
    	AnyBalance.trace(arr[2]);
    	AnyBalance.trace(arr[3]);
    	//Евро/Гривна
    	AnyBalance.trace(arr[4]);
    	AnyBalance.trace(arr[5]);
    	AnyBalance.trace(arr[6]);
    	AnyBalance.trace(arr[7]);
    	//Рубль/Гривна
    	AnyBalance.trace(arr[8]);
    	AnyBalance.trace(arr[9]);
    	AnyBalance.trace(arr[10]);
    	AnyBalance.trace(arr[11]);
    	
    	result.USDpok = parseFloat(arr[2].replace(',', '.'));
    	result.USDpro = parseFloat(arr[3].replace(',', '.'));
    	result.EURpok = parseFloat(arr[6].replace(',', '.'));
    	result.EURpro = parseFloat(arr[7].replace(',', '.'));
    	result.RUBpok = parseFloat(arr[10].replace(',', '.'));
    	result.RUBpro = parseFloat(arr[11].replace(',', '.'));
    	AnyBalance.setResult({
    		success: true,
    		USDpok: result.USDpok,
    		USDpro: result.USDpro,
    		EURpok: result.EURpok,
    		EURpro: result.EURpro,
    		RUBpok: result.RUBpok,
    		RUBpro: result.RUBpro
    	});

    Провайдер для одного балансового приложения, я просто не сдержался, пришлось даже зарегистрироваться)

    Запостил: Starksoft, 17 Ноября 2014

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

    • О̶͂,̷ͯ͋ ̓͐͗ͧ̋̈́пͭ̍ͪͨаͦр̌̈͌ͩ͒͌с͛͋ин̵г͒͋ ̄͒ͣ̍Hͥ͌TͭͫM̚L ͯ͟р̇̽͑ͣ͛ег͑͛́̄ͫͣ̇у̛̊͆̎ͤ͊л̽яͧ̆͋рͭ͒͛͐̆̆к̐͗ ͗͒̌ͯͥо̋̋͋̒̆͞йͯ̆.͐͌̇̕
      Ответить
    • Если у вас есть проблема и вы решили использовать регулярное выражение для ее решения, теперь у вас 2 проблемы. (с)
      Ответить
      • ЛолШто?
        А как в js без регулярок? Плюс они пошустрее работают, чем циклами дрочить.
        Ответить
        • Если это приложение в браузере, можно халявный (не по перфомансу) парсер использовать
          var x = document.createElement('div')
          x.innerHTML = '<i>так</i>';
          x.querySelector('i').innerHTML // "так"

          Хотя, мне регуляркой проще и приятнее.
          Ответить
          • Ну речь идёт об некоей абстрактной проблеме, а не извлечении инфы из тегов.

            Насчёт парсинга html, уже ставший классическим ответ http://stackoverflow.com/a/1733489
            Что наверное подразумевало зальго от gostа сверху.
            Ответить
      • На самом деле малоприятная фраза. Если кто-то неасилил регулярки, то это не значит что нужно их неиспользовать: толку от них бывает и правда много, все лучше чем свой автомат лепить для каждого чиха.

        Другой вопрос что нубы часто используют их не по делу. Любые XML-based языки надо парсить в стиле DOM или XQuery
        Ответить
        • > XQuery
          XPath?
          Ответить
          • Ну да, и XPath тоже.
            Кстати, XQuery же на нем основан, разве нет?

            В начале нулевых у W3C был XML головного мозга и тогда появилась куча всего вокруг XML: данные в XML ссылаются на другие данные через XLink (или как там он), все это преобразуется в другой XML посредством XSLT, узлы выбираются через XPath итд.

            Но потом XML лодка разбилась о быт, XHTML был признан неперспективным, вместо него вырос HTML5, который вообще не XML:((( А жаль. Идея была классная.
            Ответить
            • > XQuery же на нем основан, разве нет?
              Хер знает, если честно... я с XQuery никогда не сталкивался.
              Ответить
              • Там кто-то примерно так:

                XPath:
                /users/user[@age>18]

                XQuery:
                for $u in doc("users.xml")/users/user
                where $u/age>18
                return $u/name
                Ответить
                • Т.е. еще не XSLT, но уже не XPath...
                  Ответить
                  • XSLT есть трансорматор дерева XML в другое дерево XML, а XQuery есть способ выдирания из дерева нужных данных.

                    Там была стройная концепция как это всё вместе работает и как весь мир станет XML-based. Но увы.
                    Ответить
                  • Ещё не LINQ, но уже не SQL.
                    Уже не JS, но ещё не Perl.
                    Ответить
    • и автоматическое разворачивание циклов
      Ответить

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