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

    0

    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
    66. 66
    67. 67
    68. 68
    function toUrl(url, key, value) {
      if(url=='') url=window.location.href; 
      if(url.indexOf('//')<0) url='//'+url;
    
      // protocol
      var u=url.split(/\/?\//); 
      url={}; url.protocol=u.shift()+'//';
    
      // hostname
      url.hostname=u.shift().split(':'); 
      if(url.hostname.length>1) url.port=':'+url.hostname.pop()
      url.hostname=url.hostname.pop().split('@').pop();
    
      // сохраним порядок для последующей свертки
      url.pathname='/'; url.pagename=''; 
    
      try { 
        // hash
        url.search=u.pop().split(/#/); 
        if(url.search.length==2) url.sh='#'+url.search.pop();
        url.search=url.search.shift().split(/\?/);
        
        // pagename
        url.pagename=url.search.shift(); url.search=url.search[0]
      
        // pathname
        url.pathname+=u.join('/')+(u.length?'/':'');
      
        // разбор search, (c) Steven Benner, 2010
        try {
          var u = {};
          url.search.replace(
            new RegExp('([^?=&]+)(=([^&]*))?', 'g'),
            function($0, $1, $2, $3) { 
               u[$1] = decodeURIComponent($3); 
            }
          );
          url.search=u;
        } catch(e) { 
          delete url.search; 
        }
      } catch(e) { };
    
      // вернем URL как объект, где search так же
      // представлен объектом {key:value}
      if(!key && !value) return(url);
    
      // возвращаем значение ключа
      if(key && !value) return(url.search[key]);
    
      // roll up url
      var roll = function(url,search){
        var out='';
        for(var key in url) {
          out+=(search?'&'+key+'=':'')+(key=='search'?'?'+roll(url[key],1).substr(1):url[key]);
        };
        return out;
      };
      
      // устанавливаем значение ключа
      if(value) url.search[key]=value.toString(); 
      
      // сворачиваемся, с учетом порядка следования свойств
      return(roll(url));    
    }
    
    // применение
    console.log(toUrl('http://site.my:81/home/path/page.htm?a=1&b=2#hash','a',5));

    https://habr.com/ru/sandbox/126206/

    Запостил: OCETuHCKuu_nemyx, 06 Октября 2019

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

    • Я нихуя не понял, но, кажется, кто-то изобрел
      const govno = new URL('http://site.my:81/home/path/page.htm?a=1&b=2#hash')
      Ответить
      • показать все, что скрытоНикто не обратил внимание на то, что в постах спамера иногда проскакивала функция makeURLlink, которая вызывалась с неверными параметрами и отсылалась тупо как текст?
        Ответить
        • показать все, что скрытоВот эта кода.
          makeURLLink('Мексика это страна из серии «сделать что угодно, но непременно увидеть». Увидеть пирамиды ацтеков и майя и красочные колониальные города. Экскурсионные туры в Мексику помогут пробраться в затерянные города майя Яшчилан и Паленке. Узнать все тонкости календаря майя и мистической игры в мяч. Попробовать пряный шоколадный соус моле. Исследовать тайны Чичен-Ицы. А еще нас ждет невероятное Карибское море - ласковое, лазурное, манящее. Туры в Мексику заканчиваются на Карибском море, мы рекомендуем непременно задержаться в Канкуне на несколько дней. Или недель.
          Подробнее: https://www.tourtrans.ru/tours/mexico.html;)'


          см. что ей передаёт на вход этот долбоёб.
          Ответить

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