hyper/app/lib/utils/url-command.js

51 lines
908 B
JavaScript
Raw Normal View History

2016-07-13 12:44:24 -08:00
import * as regex from './url-regex';
2016-07-14 15:40:15 -08:00
export const domainRegex = /\b((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}\b/;
export default function isUrlCommand (shell, data) {
const matcher = regex[shell];
if (undefined === matcher) return null;
let url, i;
switch (matcher) {
case regex.bash:
i = 5;
break;
case regex.zsh:
i = 7;
break;
case regex.fish:
i = 4;
break;
}
let match = data.match(matcher);
2016-07-13 12:44:24 -08:00
if (match) {
2016-07-14 15:40:15 -08:00
url = match[i];
if (url) {
// extract the domain portion from the url
const domain = url.split('/')[0];
if (domainRegex.test(domain)) {
return toURL(url);
2016-07-13 12:44:24 -08:00
}
}
}
2016-07-14 15:40:15 -08:00
return null;
2016-07-13 12:44:24 -08:00
}
function toURL (domain) {
if (/^https?:\/\//.test(domain)) {
return domain;
}
if ('//' === domain.substr(0, 2)) {
return domain;
}
return 'http://' + domain;
}