Advertisement
stuppid_bot

Untitled

May 9th, 2013
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ( function() {
  2.     var s = '^!"#$%&\'()*+,./:;<=>?@\\[\\\\\\]^_`{|}~',
  3.         s1 = '[' + s + '-]+(?:[' + s + ']+[' + s + '-])*',
  4.         re = new RegExp( '^' + [
  5.             // протокол
  6.             '(?:([^:@/?#]*:)\\/\\/)?',
  7.             // пользователь и пароль
  8.             '(?:([^:@/?#]*)(?::([^:@/?#]*))?@)?',
  9.             // хост и порт
  10.             '((' + s1 + '(?:\\.' + s1 + ')*)(?::(\\d+))?)?',
  11.             // путь
  12.             '(/[^?#]*)?',
  13.             // часть после вопроса
  14.             '(\\?[^#]*)?',
  15.             // хеш
  16.             '(#.*)?'
  17.         ].join('') + '$' );
  18.     // console.log(re);
  19.    
  20.     parseURL = function(s) {
  21.         // проверяем на наличие символов с ascii кодами меньше 33, а так же на правильность кодирования
  22.         if ( /^(?:[^\x00-\x20%]|%[a-zA-Z0-9]{2})*$/.test(s) ) {
  23.             var parts = re.exec(s);
  24.  
  25.             if (parts !== null) {
  26.                 var scheme = ['protocol', 'user', 'password', 'hostname', 'host', 'port', 'pathname', 'search', 'hash'],
  27.                 i = 0,
  28.                 l = scheme.length,
  29.                 o = {};
  30.  
  31.                 while (i < l) {
  32.                     o[scheme[i]] = parts[++i] === undefined ? '' : parts[i];
  33.                 }
  34.  
  35.  
  36.                 if (o.pathname) {
  37.                     o.pathname = o.pathname.replace(/\\/g, '/').replace(/\/{2,}/g, '/');
  38.                 }
  39.  
  40.                 return o;            
  41.             }
  42.         }
  43.  
  44.         return false;
  45.     };
  46. } )();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement