UNPKG

@ginstone/nga-api

Version:

52 lines (51 loc) 2.04 kB
"use strict"; // 论坛标签 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;