Fix parsing tlds. Fixes #74
This commit is contained in:
Родитель
38bfecd081
Коммит
0843fc4fa3
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -0,0 +1,31 @@
|
|||
var parse_host = function(host){
|
||||
if(!tlds){
|
||||
throw new Error('No TLDs!');
|
||||
}
|
||||
|
||||
var parts = host.split(".");
|
||||
var stack = "";
|
||||
var tld_level = 1; //unknown tld are 1st level
|
||||
for(var i=parts.length-1, part;i>=0;i--){
|
||||
part = parts[i];
|
||||
stack = stack ? part + "." + stack : part;
|
||||
if(!tlds[stack]){
|
||||
break;
|
||||
}
|
||||
tld_level = tlds[stack];
|
||||
}
|
||||
if(parts.length <= tld_level ) {
|
||||
return {
|
||||
tld: null,
|
||||
domain: host
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
tld : parts.slice(-tld_level).join('.'),
|
||||
domain : parts.slice(-tld_level-1).join('.'),
|
||||
sub : parts.slice(0, (-tld_level-1)).join('.'),
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
};
|
|
@ -50,14 +50,9 @@ function processURL(URL, ignoreProtocol, ignoreSubdomain, ignorePath, ignorePort
|
|||
baseHost = host;
|
||||
}
|
||||
else {
|
||||
var result = host.match(/[^./]+\.[^./]+$/); // catch the two last parts, it's de hostname and the tld
|
||||
//@TODO Implement known list of TLDs
|
||||
//@url https://github.com/131/node-tld/blob/master/effective_tld_names.json
|
||||
|
||||
if(result) {
|
||||
baseHost = result[0];
|
||||
} else {
|
||||
baseHost = host;
|
||||
var tld = parse_host(host);
|
||||
if(tld) {
|
||||
baseHost = tld.domain;
|
||||
}
|
||||
}
|
||||
var returnURL = "";
|
||||
|
|
|
@ -19,6 +19,8 @@ module.exports = function (config) {
|
|||
|
||||
// list of files / patterns to load in the browser
|
||||
files: [
|
||||
'js/lib/data/tlds.js',
|
||||
'js/lib/parseTLD.js',
|
||||
'js/lib/parseUrl.js',
|
||||
{ pattern: 'tests/**/*.js', included: true }
|
||||
],
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
"background": {
|
||||
"scripts": [
|
||||
"/js/vendor/jquery/jquery.js",
|
||||
"/js/lib/data/tlds.js",
|
||||
"/js/lib/parseTLD.js",
|
||||
"/js/lib/parseUrl.js",
|
||||
"/js/vendor/sjcl/sjcl.js",
|
||||
"/js/lib/promise.js",
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Загрузка…
Ссылка в новой задаче