UNPKG

@ginstone/nga-api

Version:

175 lines (174 loc) 3.54 kB
"use strict"; // 标签名称 Object.defineProperty(exports, "__esModule", { value: true }); exports.TagNameUtils = exports.TagName = void 0; const PatternFactory_1 = require("./PatternFactory"); var TagName; (function (TagName) { /** * 附件 */ TagName["attach"] = "attach"; /** * 小标题 */ TagName["heading"] = "heading"; /** * 列表 */ TagName["list"] = "ul"; /** * 列表项目 */ TagName["li"] = "li"; /** * 引用框 */ TagName["quote"] = "quote"; /** * 随机块 */ TagName["randomblock"] = "randomblock"; /** * 随机块外层 */ TagName["randomblocks"] = "randomBlocks"; /** * 视频标签 */ TagName["flash"] = "flash"; /** * 折叠框 */ TagName["collapse"] = "collapse"; /** * 图片 */ TagName["img"] = "img"; /** * 删除线 */ TagName["del"] = "del"; /** * 加粗 */ TagName["bold"] = "bold"; /** * 下划线 */ TagName["underline"] = "underline"; /** * 斜体 */ TagName["italic"] = "italic"; /** * 回复链接 */ TagName["pid"] = "pid"; /** * 用户链接 */ TagName["uid"] = "uid"; /** * 主题链接 */ TagName["tid"] = "tid"; /** * 链接 */ TagName["url"] = "url"; /** * 字体 */ TagName["font"] = "font"; /** * 字体颜色 */ TagName["color"] = "color"; /** * 表格 */ TagName["table"] = "table"; /** * 字体大小 */ TagName["size"] = "size"; /** * 表格行 */ TagName["tr"] = "tr"; /** * 向右浮动 */ TagName["right"] = "right"; /** * 向左浮动 */ TagName["left"] = "left"; /** * 表格-单元格 */ TagName["td"] = "td"; /** * 骰子 */ TagName["dice"] = "dice"; /** * 对齐方式: left right center */ TagName["align"] = "align"; /** * 代码 */ TagName["code"] = "code"; /** * @用户 */ TagName["at"] = "atUser"; /** * 文本 = 不存在该标签,将文本视为被该标签包, */ TagName["text"] = "text"; })(TagName = exports.TagName || (exports.TagName = {})); /** * 工具方法 */ class TagNameUtils { /** * 获取倒序摆列的所有标签名 */ static list() { const keys = Object.keys(TagName); // @ts-ignore const values = keys.map(k => TagName[k]); values.sort((a, b) => { if (a.length != b.length) { return b.length - a.length; } return b.localeCompare(a); }); return values; } /** * 获取用于匹配标签的正则表达式 * @return 正则表达式 */ static getMatchPattern(name) { return PatternFactory_1.PatternFactory.getPattern(`^\\[${name}([^\\[]*?)](.*?)\\[/${name}]`); } /** * 获取用于解析度正则表达式 * @return 正则表达式 */ static getParsePattern(name) { return PatternFactory_1.PatternFactory.getPattern(`^\\[${name}([^\\[]*?)](.*)\\[/${name}]$`); } /** * 返回第一个匹配的标签名枚举 * @param code 代码 */ static matcher(code) { return this.list().filter(name => this.getMatchPattern(name).exec(code))[0]; } } exports.TagNameUtils = TagNameUtils;