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

    +161

    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
    function explode( delimiter, string ) {	// Split a string by string
    	// 
    	// +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    	// +   improved by: kenneth
    	// +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    
    	var emptyArray = { 0: '' };
    
    	if ( arguments.length != 2
    		|| typeof arguments[0] == 'undefined'
    		|| typeof arguments[1] == 'undefined' )
    	{
    		return null;
    	}
    
    	if ( delimiter === ''
    		|| delimiter === false
    		|| delimiter === null )
    	{
    		return false;
    	}
    
    	if ( typeof delimiter == 'function'
    		|| typeof delimiter == 'object'
    		|| typeof string == 'function'
    		|| typeof string == 'object' )
    	{
    		return emptyArray;
    	}
    
    	if ( delimiter === true ) {
    		delimiter = '1';
    	}
    
    	return string.toString().split ( delimiter.toString() );
    }

    Из сборника JS-реализаций PHP функций : http://javascript.ru/php/explode
    Сюда можно половину этого сборника постить.

    Запостил: scalar4eblo4no, 17 Марта 2011

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

    • Вот до чего доводит дурацкая динамическая типизация.
      Ответить
      • я бы сказал -- отсутствие статической:)
        Ответить
        • Знаете, когда-то давным-давным давно, в далёкой-далёкой галактике... вобщем был написан некий динамический алгоритм использующий плюсы динамической типизации в более чем полной динамической мере. Но на тот момент, языков поддерживающих подобное было раз-два-и-может-быть-три. Пришлось создавать данные структуры в качестве вспомогательного инструмента из подручных средств, на что ушло чуть менее чем полностью всё свободное время, которого было с гулькин нос. И на тот момент, когда сие было реализовано - таки оказалось, что тот инструмент, что создан через семь с половиной потов, уже имеется в более развитой интерпретации... Данное известие было взято за основу и в результате на всё это, включая алгоритм, были положены все мои 35 сантиметров.
          А вот сейчас оказывается, что динамическая типизация - это не есть хорошо.
          "Абидна, слюшай"...
          Ответить
          • динамическая (рантаймовая) типизация это хорошо
            статическая (компайл тайм) тоже хорошо

            хорошо когда есть обе (как в жабе)
            плохо когда нет динамической (как в сях)
            плохо когда нет статической (как в пыхе)

            без статической прикольно писать скрипты на 20 строк

            в мире питона правда уверены что статическая типизация не нужна, потому что от бед она все равно не спасет, а спасут юнит=тесты, которыми там покрывают 99% кода, а раз есть юнит-тесты то можно жить и без статики.

            но к миру PHP, равно как и к JS, эта идеология явно не относится)
            Ответить
      • Типизация тут не при чем, посмотрите внимательно на проверки.
        Ответить
        • показать все, что скрытодурачье! ты бы почитал сначала, что эти функции из себя представляют.
          они являтся ПОЛНОЙ КОПИЕЙ функций из PHP, т.е. эти проверки нужны для того, чтобы функция вела себя точно-также как и в PHP.
          посрал в карму
          Ответить
          • Я бы предложил автору этого незадачливого творения обыграть следующую ситуацию:
            String.prototype.toString = function(){ return "suddenly Chuck Norris!"; }; alert(new String("foo"));

            PHP и JavaScript в принципе не могут работать одинаково, только если поставить цель получить одинаковый результат, его можно получить, предварительно оговорив "правила". А универсальных решений быть не может. Уже сама по себе попытка написать такую функцию вызывает подозрение...
            Ответить
          • Уважаемые знаток, покажите мне, дураку, версию PHP которая при неверных входных параметрах возвращала бы хэш 0 => "".
            Или в случае если первый параметр это булевое true (!!!) , то в качестве разделителя использовала бы символ '1' ?
            Это же полный, прошу прощени, пи*дец.

            Ни одна из проверок здесь не имеет ни малейшего смысла в данном случае.
            Ответить
          • Если интересно знать, как функция ведет себя в PHP, велкам:
            http://svn.php.net/viewvc/php/php-src/trunk/ext/standard/string.c?view=markup
            Ответить
    • (new String('I LOLD')).toString()
      Ответить

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