🏡 index : quine-global/hyper.git

import * as regex from './url-regex';

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);

  if (match) {
    url = match[i];
    if (url) {
      // extract the domain portion from the url
      const domain = url.split('/')[0];
      if (domainRegex.test(domain)) {
        return toURL(url);
      }
    }
  }

  return null;
}

function toURL (domain) {
  if (/^https?:\/\//.test(domain)) {
    return domain;
  }

  if ('//' === domain.substr(0, 2)) {
    return domain;
  }

  return 'http://' + domain;
}