/**
 * URL 格式化工具函数
 */

import { extractDomain } from "./urlHelper";

/**
 * 格式化 URL 显示
 * @param url URL 地址
 * @param options 格式化选项
 * @returns 格式化后的 URL
 * 
 * @example
 * formatUrlDisplay('https://www.example.com/path', { showProtocol: false })
 * // 'www.example.com/path'
 */
export function formatUrlDisplay(url, options) {
  if (!url) return '';

  // 自定义格式
  if (options.displayFormat === 'custom' && options.customFormat) {
    return options.customFormat(url);
  }

  // 仅域名
  if (options.displayFormat === 'domain') {
    return extractDomain(url);
  }

  // 完整格式（根据配置调整）
  var display = url;

  // 隐藏协议
  if (options.showProtocol === false) {
    display = display.replace(/^https?:\/\//, '');
  }

  // 隐藏 www
  if (options.showWww === false) {
    display = display.replace(/^(https?:\/\/)?(www\.)/, '$1');
  }

  // 隐藏路径
  if (options.showPathname === false) {
    try {
      var urlObj = new URL(url.startsWith('http') ? url : 'https://' + url);
      display = urlObj.hostname;
      if (options.showProtocol !== false && urlObj.protocol) {
        display = urlObj.protocol + '//' + display;
      }
    } catch (_unused) {
      // 解析失败，返回原值
    }
  }
  return display;
}

/**
 * 隐藏 URL 协议
 * @param url URL 地址
 * @returns 隐藏协议后的 URL
 * 
 * @example
 * hideUrlProtocol('https://example.com') // 'example.com'
 */
export function hideUrlProtocol(url) {
  return url.replace(/^https?:\/\//, '');
}

/**
 * 隐藏 www 前缀
 * @param url URL 地址
 * @returns 隐藏 www 后的 URL
 * 
 * @example
 * hideWwwPrefix('https://www.example.com') // 'https://example.com'
 */
export function hideWwwPrefix(url) {
  return url.replace(/^(https?:\/\/)?(www\.)/, '$1');
}