UNPKG

@herbertgao/surgio

Version:

Generating rules for Surge, Clash, Quantumult like a PRO

79 lines 2.72 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.removeFlag = exports.prependFlag = exports.addFlagMap = void 0; const emoji_regex_1 = __importDefault(require("emoji-regex")); const lodash_1 = __importDefault(require("lodash")); const flag_cn_1 = require("../misc/flag_cn"); const flagMap = new Map(); const customFlagMap = new Map(); for (const [key, value] of Object.entries(flag_cn_1.FLAGS)) { value.forEach((name) => { flagMap.set(name, key); }); } const addFlagMap = (name, emoji) => { if (flagMap.has(name)) { flagMap.delete(name); } customFlagMap.set(name, emoji); }; exports.addFlagMap = addFlagMap; const prependFlag = (str, removeExistingEmoji = false) => { const emojiRegex = (0, emoji_regex_1.default)(); const existingEmoji = emojiRegex.exec(str); if (existingEmoji) { if (removeExistingEmoji) { // 去除已有的 emoji str = (0, exports.removeFlag)(str); } else { // 不作处理 return str; } } for (const [key, value] of customFlagMap.entries()) { if (lodash_1.default.isRegExp(key)) { if (key.test(str)) { return `${value} ${str}`; } } else { const isKeyChineseCharacters = /[\u4E00-\u9FA5]/.test(key); const regex = new RegExp(`(^|\\b)${key}(\\b|$)`, 'i'); if (isKeyChineseCharacters && str.toUpperCase().includes(key)) { return `${value} ${str}`; } else if (!isKeyChineseCharacters && regex.test(str)) { return `${value} ${str}`; } } } for (const [key, value] of flagMap.entries()) { if (lodash_1.default.isRegExp(key)) { if (key.test(str)) { return `${value} ${str}`; } } else { const isKeyChineseCharacters = /[\u4E00-\u9FA5]/.test(key); const regex = new RegExp(`(^|\\b)${key}(\\b|$)`, 'i'); if (isKeyChineseCharacters && str.toUpperCase().includes(key)) { return `${value} ${str}`; } else if (!isKeyChineseCharacters && regex.test(str)) { return `${value} ${str}`; } } } return str; }; exports.prependFlag = prependFlag; const removeFlag = (str) => { const emojiRegex = (0, emoji_regex_1.default)(); return str.replace(emojiRegex, '').trim(); }; exports.removeFlag = removeFlag; //# sourceMappingURL=flag.js.map