@ginstone/nga-api
Version:
52 lines (51 loc) • 2.04 kB
JavaScript
;
// 论坛标签
Object.defineProperty(exports, "__esModule", { value: true });
exports.BbsTag = void 0;
const TagName_1 = require("./TagName");
const BbsTagParser_1 = require("./BbsTagParser");
const StrUtils_1 = require("@ginstone/common-utils/dist/src/utils/StrUtils");
const NgaDomain_1 = require("../enums/NgaDomain");
class BbsTag {
constructor(name, raw) {
this.name = name;
this.raw = raw;
// 解析其他字段
const pattern = TagName_1.TagNameUtils.getParsePattern(name);
const matcher = pattern.exec(raw);
if (matcher) {
const paramString = matcher[1].replace("=", "");
const innerCode = matcher[2];
if (paramString)
this.params = paramString;
if (name == TagName_1.TagName.url) {
this.params = paramString || (0, StrUtils_1.unEscape)(innerCode);
if (this.params) {
this.params = this.params.replace(NgaDomain_1.NgaDomain.cn, "");
this.params = this.params.replace(NgaDomain_1.NgaDomain.com, "");
this.params = this.params.replace(NgaDomain_1.NgaDomain._178, "");
}
}
if ([TagName_1.TagName.tid, TagName_1.TagName.pid].includes(name) && !paramString) {
const number = Number(innerCode);
if (!isNaN(number)) {
this.params = innerCode;
}
}
if (name == TagName_1.TagName.code) {
//代码框 内部直接作为文本处理
this.children = [BbsTag.text(innerCode)];
}
else {
// 继续解析子节点
this.children = BbsTagParser_1.BbsTagParser.parseCode(innerCode);
}
}
}
static text(text) {
const tag = new BbsTag(TagName_1.TagName.text, text);
tag.text = (0, StrUtils_1.unEscape)(text);
return tag;
}
}
exports.BbsTag = BbsTag;