@herbertgao/surgio
Version:
Generating rules for Surge, Clash, Quantumult like a PRO
79 lines • 2.72 kB
JavaScript
;
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