@ginstone/nga-api
Version:
175 lines (174 loc) • 3.54 kB
JavaScript
"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;