@panzer1119/bbcode-parser
Advanced tools
| import { BBTag } from "./bbtag"; | ||
| export declare function endsWith(str: string, endStr: string): boolean; | ||
| export declare function startsWith(str: string, startStr: string): boolean; | ||
| export declare const tagsToReplace: { | ||
| [key: string]: string; | ||
| }; | ||
| export declare function escapeHTML(html: string): string; | ||
| export declare class BBCodeParser { | ||
| private bbTags; | ||
| private options; | ||
| constructor(bbTags: { | ||
| [key: string]: BBTag; | ||
| }, options?: { | ||
| escapeHTML: boolean; | ||
| }); | ||
| parseString(content: string, stripTags?: boolean, insertLineBreak?: boolean, escapingHtml?: boolean): string; | ||
| private treeToHtml; | ||
| static defaultTags(): { | ||
| [key: string]: BBTag; | ||
| }; | ||
| static escapeHTML(content: string): string; | ||
| static startsWith(str: string, startStr: string): boolean; | ||
| static endsWith(str: string, endStr: string): boolean; | ||
| } |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.BBCodeParser = exports.escapeHTML = exports.tagsToReplace = exports.startsWith = exports.endsWith = void 0; | ||
| //Indicates if the first string ends with the second str | ||
| var bbtag_1 = require("./bbtag"); | ||
| var bbcodeparsetree_1 = require("./bbcodeparsetree"); | ||
| function endsWith(str, endStr) { | ||
| if (str.length === 0) { | ||
| return false; | ||
| } | ||
| if (endStr.length > str.length) { | ||
| return false; | ||
| } | ||
| var inStrEnd = str.substr(str.length - endStr.length, endStr.length); | ||
| return endStr === inStrEnd; | ||
| } | ||
| exports.endsWith = endsWith; | ||
| //Indicates if the first string starts with the second string | ||
| function startsWith(str, startStr) { | ||
| if (str.length === 0) { | ||
| return false; | ||
| } | ||
| if (startStr.length > str.length) { | ||
| return false; | ||
| } | ||
| var inStrStart = str.substr(0, startStr.length); | ||
| return startStr === inStrStart; | ||
| } | ||
| exports.startsWith = startsWith; | ||
| exports.tagsToReplace = { | ||
| "&": "&", | ||
| "<": "<", | ||
| ">": ">", | ||
| }; | ||
| //Escapes the given html | ||
| function escapeHTML(html) { | ||
| return html.replace(/[&<>]/g, function (tag) { | ||
| return exports.tagsToReplace[tag] || tag; | ||
| }); | ||
| } | ||
| exports.escapeHTML = escapeHTML; | ||
| var BBCodeParser = /** @class */ (function () { | ||
| function BBCodeParser(bbTags, options) { | ||
| if (options === void 0) { options = { escapeHTML: false }; } | ||
| this.bbTags = bbTags; | ||
| this.options = options; | ||
| } | ||
| //Parses the given string | ||
| BBCodeParser.prototype.parseString = function (content, stripTags, insertLineBreak, escapingHtml) { | ||
| if (stripTags === void 0) { stripTags = false; } | ||
| if (insertLineBreak === void 0) { insertLineBreak = true; } | ||
| if (escapingHtml === void 0) { escapingHtml = true; } | ||
| //Create the parse tree | ||
| var parseTree = bbcodeparsetree_1.BBCodeParseTree.buildTree(content, this.bbTags); | ||
| //If the tree is invalid, return the input as text | ||
| if (!parseTree || !parseTree.isValid()) { | ||
| return content; | ||
| } | ||
| //Convert it to HTML | ||
| return this.treeToHtml(parseTree.subTrees, insertLineBreak, escapingHtml, stripTags); | ||
| }; | ||
| //Converts the given subtrees into html | ||
| BBCodeParser.prototype.treeToHtml = function (subTrees, insertLineBreak, escapingHtml, stripTags) { | ||
| var _this = this; | ||
| if (stripTags === void 0) { stripTags = false; } | ||
| var htmlString = ""; | ||
| var suppressLineBreak = false; | ||
| subTrees.forEach(function (currentTree) { | ||
| if (currentTree.treeType === bbcodeparsetree_1.TreeType.Text) { | ||
| var textContent = currentTree.content; | ||
| if (escapingHtml) { | ||
| textContent = _this.options.escapeHTML ? escapeHTML(textContent) : textContent; | ||
| } | ||
| if (insertLineBreak && !suppressLineBreak) { | ||
| textContent = textContent.replace(/(\r\n|\n|\r)/gm, "<br>"); | ||
| suppressLineBreak = false; | ||
| } | ||
| htmlString += textContent; | ||
| } | ||
| else { | ||
| //Get the tag | ||
| var bbTag = _this.bbTags[currentTree.content]; | ||
| var content = _this.treeToHtml(currentTree.subTrees, bbTag.insertLineBreaks, escapingHtml, stripTags); | ||
| //Check if to strip the tags | ||
| if (!stripTags) { | ||
| htmlString += bbTag.markupGenerator(bbTag, content, currentTree.attributes); | ||
| } | ||
| else { | ||
| htmlString += content; | ||
| } | ||
| suppressLineBreak = bbTag.suppressLineBreaks; | ||
| } | ||
| }); | ||
| return htmlString; | ||
| }; | ||
| //Returns the default tags | ||
| BBCodeParser.defaultTags = function () { | ||
| var bbTags = {}; | ||
| //Simple tags | ||
| bbTags["b"] = new bbtag_1.BBTag("b", true, false, false); | ||
| bbTags["i"] = new bbtag_1.BBTag("i", true, false, false); | ||
| bbTags["u"] = new bbtag_1.BBTag("u", true, false, false); | ||
| bbTags["h1"] = bbtag_1.BBTag.createSimpleTag("h1"); | ||
| bbTags["h2"] = bbtag_1.BBTag.createSimpleTag("h2"); | ||
| bbTags["h3"] = bbtag_1.BBTag.createSimpleTag("h3"); | ||
| bbTags["h4"] = bbtag_1.BBTag.createSimpleTag("h4"); | ||
| bbTags["h5"] = bbtag_1.BBTag.createSimpleTag("h5"); | ||
| bbTags["hr"] = bbtag_1.BBTag.createSimpleTag("hr"); | ||
| bbTags["table"] = bbtag_1.BBTag.createSimpleTag("table"); | ||
| bbTags["tr"] = bbtag_1.BBTag.createSimpleTag("tr"); | ||
| bbTags["th"] = bbtag_1.BBTag.createSimpleTag("th"); | ||
| bbTags["td"] = bbtag_1.BBTag.createSimpleTag("td"); | ||
| bbTags["spoiler"] = bbtag_1.BBTag.createSimpleTag("spoiler"); | ||
| bbTags["noparse"] = new bbtag_1.BBTag("noparse", true, false, true); | ||
| bbTags["strike"] = bbtag_1.BBTag.createSimpleHTMLTag("strike", "s"); | ||
| bbTags["list"] = bbtag_1.BBTag.createSimpleHTMLTag("olist", "ul"); | ||
| bbTags["olist"] = bbtag_1.BBTag.createSimpleHTMLTag("olist", "ol"); | ||
| bbTags["*"] = bbtag_1.BBTag.createSimpleHTMLTag("*", "li"); | ||
| bbTags["text"] = new bbtag_1.BBTag("text", true, false, true, function (tag, content) { return content; }); | ||
| bbTags["img"] = new bbtag_1.BBTag("img", true, false, false, function (tag, content) { return "<img src=\"" + content + "\" alt=\"" + content + "\"/>"; }); | ||
| bbTags["quote"] = new bbtag_1.BBTag("quote", true, false, false, function (tag, content, attributes) { | ||
| var address = attributes["quote"] ? "<address>" + attributes["quote"] + "</address>" : ""; | ||
| return "<blockquote>" + address + content + "</blockquote>"; | ||
| }); | ||
| bbTags["url"] = new bbtag_1.BBTag("url", true, false, false, function (tag, content, attributes) { | ||
| var link = content; | ||
| if (attributes["url"]) { | ||
| link = escapeHTML(attributes["url"]); | ||
| } | ||
| if (!startsWith(link, "http://") && !startsWith(link, "https://")) { | ||
| link = "http://" + link; | ||
| } | ||
| return '<a href="' + link + '" target="_blank">' + content + "</a>"; | ||
| }); | ||
| bbTags["code"] = new bbtag_1.BBTag("code", true, false, true, function (tag, content, attributes) { | ||
| var lang = attributes["lang"]; | ||
| if (lang) { | ||
| return '<code class="' + escapeHTML(lang) + '">' + content + "</code>"; | ||
| } | ||
| else { | ||
| return "<code>" + content + "</code>"; | ||
| } | ||
| }); | ||
| return bbTags; | ||
| }; | ||
| BBCodeParser.escapeHTML = function (content) { | ||
| return escapeHTML(content); | ||
| }; | ||
| BBCodeParser.startsWith = function (str, startStr) { | ||
| return startsWith(str, startStr); | ||
| }; | ||
| BBCodeParser.endsWith = function (str, endStr) { | ||
| return endsWith(str, endStr); | ||
| }; | ||
| return BBCodeParser; | ||
| }()); | ||
| exports.BBCodeParser = BBCodeParser; | ||
| //# sourceMappingURL=bbcodeparser.js.map |
| {"version":3,"file":"bbcodeparser.js","sourceRoot":"","sources":["../src/bbcodeparser.ts"],"names":[],"mappings":"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"} |
| import { BBTag } from "./bbtag"; | ||
| export declare enum TreeType { | ||
| Root = 0, | ||
| Text = 1, | ||
| Tag = 2 | ||
| } | ||
| export declare class BBCodeParseTree { | ||
| treeType: TreeType; | ||
| content: string; | ||
| attributes: { | ||
| [key: string]: string; | ||
| }; | ||
| subTrees: BBCodeParseTree[]; | ||
| constructor(treeType: TreeType, content: string, attributes?: { | ||
| [key: string]: string; | ||
| }, subTrees?: BBCodeParseTree[]); | ||
| isValid(): boolean; | ||
| toString(): string; | ||
| static buildTree(str: string, bbTags: { | ||
| [key: string]: BBTag; | ||
| }): BBCodeParseTree | null; | ||
| private static buildTreeFromTokens; | ||
| } |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.BBCodeParseTree = exports.TreeType = void 0; | ||
| var tokenizer_1 = require("./tokenizer"); | ||
| var TreeType; | ||
| (function (TreeType) { | ||
| TreeType[TreeType["Root"] = 0] = "Root"; | ||
| TreeType[TreeType["Text"] = 1] = "Text"; | ||
| TreeType[TreeType["Tag"] = 2] = "Tag"; | ||
| })(TreeType = exports.TreeType || (exports.TreeType = {})); | ||
| var BBCodeParseTree = /** @class */ (function () { | ||
| function BBCodeParseTree(treeType, content, attributes, subTrees) { | ||
| if (attributes === void 0) { attributes = {}; } | ||
| if (subTrees === void 0) { subTrees = []; } | ||
| this.treeType = treeType; | ||
| this.content = content; | ||
| this.attributes = attributes; | ||
| this.subTrees = subTrees; | ||
| } | ||
| //Indicates if the current tree is valid | ||
| BBCodeParseTree.prototype.isValid = function () { | ||
| //An tree without subtrees is valid | ||
| if (this.subTrees.length === 0) { | ||
| return true; | ||
| } | ||
| //An tree is valid if all of its subtrees are valid | ||
| for (var i in this.subTrees) { | ||
| var currentTree = this.subTrees[i]; | ||
| if (!currentTree || !currentTree.isValid()) { | ||
| return false; | ||
| } | ||
| } | ||
| return true; | ||
| }; | ||
| //String representation of the tree | ||
| BBCodeParseTree.prototype.toString = function () { | ||
| return TreeType[this.treeType] + " - " + this.content; | ||
| }; | ||
| //Builds a parse tree from the given string | ||
| BBCodeParseTree.buildTree = function (str, bbTags) { | ||
| //Get the tokens | ||
| var tokenizer = new tokenizer_1.Tokenizer(bbTags); | ||
| var tokens = tokenizer.tokenizeString(str); | ||
| //Build the tree | ||
| tokens.reverse(); | ||
| return BBCodeParseTree.buildTreeFromTokens(new BBCodeParseTree(TreeType.Root, str), tokens); | ||
| }; | ||
| //Builds a tree from the given tokens | ||
| BBCodeParseTree.buildTreeFromTokens = function (rootTree, tokens, currentTag) { | ||
| if (currentTag === void 0) { currentTag = ""; } | ||
| //The root root is invalid, return null | ||
| if (!rootTree) { | ||
| return null; | ||
| } | ||
| //There are no more tokens, return the root | ||
| if (tokens.length === 0) { | ||
| return rootTree; | ||
| } | ||
| //Remove the first token | ||
| var currentToken = tokens.pop(); | ||
| if (!currentToken) { | ||
| return rootTree; | ||
| } | ||
| //Add the text token as a text parse tree | ||
| if (currentToken.tokenType === tokenizer_1.TokenType.Text) { | ||
| rootTree.subTrees.push(new BBCodeParseTree(TreeType.Text, currentToken.content)); | ||
| } | ||
| //Create a new tag tree and find its subtrees | ||
| if (currentToken.tokenType === tokenizer_1.TokenType.StartTag) { | ||
| var tagName = currentToken.content; | ||
| var treeFromTokens = BBCodeParseTree.buildTreeFromTokens(new BBCodeParseTree(TreeType.Tag, tagName, currentToken.tagAttributes), tokens, tagName); | ||
| if (treeFromTokens) { | ||
| rootTree.subTrees.push(treeFromTokens); | ||
| } | ||
| } | ||
| //Check if its the correct end tag | ||
| if (currentToken.tokenType === tokenizer_1.TokenType.EndTag) { | ||
| if (currentToken.content === currentTag) { | ||
| return rootTree; | ||
| } | ||
| else { | ||
| return null; | ||
| } | ||
| } | ||
| //If we got no more tokens, and we have opened an tag but not closed it, return null | ||
| if (tokens.length === 0) { | ||
| if (currentTag !== "") { | ||
| return null; | ||
| } | ||
| } | ||
| //Proceed to the next token | ||
| return BBCodeParseTree.buildTreeFromTokens(rootTree, tokens, currentTag); | ||
| }; | ||
| return BBCodeParseTree; | ||
| }()); | ||
| exports.BBCodeParseTree = BBCodeParseTree; | ||
| //# sourceMappingURL=bbcodeparsetree.js.map |
| {"version":3,"file":"bbcodeparsetree.js","sourceRoot":"","sources":["../src/bbcodeparsetree.ts"],"names":[],"mappings":"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"} |
| export declare class BBTag { | ||
| tagName: string; | ||
| insertLineBreaks: boolean; | ||
| suppressLineBreaks: boolean; | ||
| noNesting: boolean; | ||
| markupGenerator: (tag: BBTag, content: string, attributes: { | ||
| [key: string]: string; | ||
| }) => string; | ||
| constructor(tagName: string, //The name of the tag | ||
| insertLineBreaks: boolean, //Indicates if line breaks are inserted inside the tag content | ||
| suppressLineBreaks: boolean, //Suppresses any line breaks for nested tags | ||
| noNesting: boolean, //Indicates if the tag supports nested tags | ||
| markupGenerator?: (tag: BBTag, content: string, attributes: { | ||
| [key: string]: string; | ||
| }) => string); | ||
| static createSimpleTag(tagName: string, insertLineBreaks?: boolean): BBTag; | ||
| static createSimpleHTMLTag(tagName: string, htmlTag: string, insertLineBreaks?: boolean): BBTag; | ||
| static createTag(tagName: string, markupGenerator: (tag: BBTag, content: string, attributes: { | ||
| [key: string]: string; | ||
| }) => string, insertLineBreaks?: boolean): BBTag; | ||
| } |
+35
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.BBTag = void 0; | ||
| var BBTag = /** @class */ (function () { | ||
| function BBTag(tagName, //The name of the tag | ||
| insertLineBreaks, //Indicates if line breaks are inserted inside the tag content | ||
| suppressLineBreaks, //Suppresses any line breaks for nested tags | ||
| noNesting, //Indicates if the tag supports nested tags | ||
| markupGenerator) { | ||
| if (markupGenerator === void 0) { markupGenerator = function (tag, content) { return "<" + tag.tagName + ">" + content + "</" + tag.tagName + ">"; }; } | ||
| this.tagName = tagName; | ||
| this.insertLineBreaks = insertLineBreaks; | ||
| this.suppressLineBreaks = suppressLineBreaks; | ||
| this.noNesting = noNesting; | ||
| this.markupGenerator = markupGenerator; | ||
| } | ||
| //Creates a new simple tag | ||
| BBTag.createSimpleTag = function (tagName, insertLineBreaks) { | ||
| if (insertLineBreaks === void 0) { insertLineBreaks = true; } | ||
| return new BBTag(tagName, insertLineBreaks, false, false); | ||
| }; | ||
| //Creates a new simple tag | ||
| BBTag.createSimpleHTMLTag = function (tagName, htmlTag, insertLineBreaks) { | ||
| if (insertLineBreaks === void 0) { insertLineBreaks = true; } | ||
| return new BBTag(tagName, insertLineBreaks, false, false, function (tag, content) { return "<" + htmlTag + ">" + content + "</" + htmlTag + ">"; }); | ||
| }; | ||
| //Creates a tag with the given generator | ||
| BBTag.createTag = function (tagName, markupGenerator, insertLineBreaks) { | ||
| if (insertLineBreaks === void 0) { insertLineBreaks = true; } | ||
| return new BBTag(tagName, insertLineBreaks, false, false, markupGenerator); | ||
| }; | ||
| return BBTag; | ||
| }()); | ||
| exports.BBTag = BBTag; | ||
| //# sourceMappingURL=bbtag.js.map |
| {"version":3,"file":"bbtag.js","sourceRoot":"","sources":["../src/bbtag.ts"],"names":[],"mappings":";;;AAAA;IACI,eACW,OAAe,EAAE,qBAAqB;IACtC,gBAAyB,EAAE,8DAA8D;IACzF,kBAA2B,EAAE,4CAA4C;IACzE,SAAkB,EAAE,2CAA2C;IAC/D,eAG2C;QAH3C,gCAAA,EAAA,4BACH,GAAG,EACH,OAAO,IACN,OAAA,MAAI,GAAG,CAAC,OAAO,SAAI,OAAO,UAAK,GAAG,CAAC,OAAO,MAAG,EAA7C,CAA6C;QAP3C,YAAO,GAAP,OAAO,CAAQ;QACf,qBAAgB,GAAhB,gBAAgB,CAAS;QACzB,uBAAkB,GAAlB,kBAAkB,CAAS;QAC3B,cAAS,GAAT,SAAS,CAAS;QAClB,oBAAe,GAAf,eAAe,CAG4B;IACnD,CAAC;IAEJ,0BAA0B;IACZ,qBAAe,GAA7B,UAA8B,OAAe,EAAE,gBAAuB;QAAvB,iCAAA,EAAA,uBAAuB;QAClE,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9D,CAAC;IAED,0BAA0B;IACZ,yBAAmB,GAAjC,UAAkC,OAAe,EAAE,OAAe,EAAE,gBAAuB;QAAvB,iCAAA,EAAA,uBAAuB;QACvF,OAAO,IAAI,KAAK,CACZ,OAAO,EACP,gBAAgB,EAChB,KAAK,EACL,KAAK,EACL,UAAC,GAAG,EAAE,OAAO,IAAK,OAAA,MAAI,OAAO,SAAI,OAAO,UAAK,OAAO,MAAG,EAArC,CAAqC,CAC1D,CAAC;IACN,CAAC;IAED,wCAAwC;IAC1B,eAAS,GAAvB,UACI,OAAe,EACf,eAA+F,EAC/F,gBAAuB;QAAvB,iCAAA,EAAA,uBAAuB;QAEvB,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;IAC/E,CAAC;IACL,YAAC;AAAD,CAAC,AApCD,IAoCC;AApCY,sBAAK"} |
| import { BBTag } from "./bbtag"; | ||
| export declare enum TokenType { | ||
| Text = 0, | ||
| StartTag = 1, | ||
| EndTag = 2 | ||
| } | ||
| export declare class Token { | ||
| tokenType: TokenType; | ||
| content: string; | ||
| tagAttributes?: { | ||
| [key: string]: string; | ||
| } | undefined; | ||
| tagStr?: string | undefined; | ||
| constructor(tokenType: TokenType, content: string, tagAttributes?: { | ||
| [key: string]: string; | ||
| } | undefined, tagStr?: string | undefined); | ||
| toString(): string; | ||
| equals(token: Token): boolean; | ||
| } | ||
| export declare function textToken(content: string): Token; | ||
| export declare function tagToken(match: RegExpExecArray): Token; | ||
| export declare function asTextToken(token: Token): void; | ||
| export declare class Tokenizer { | ||
| private bbTags; | ||
| constructor(bbTags: { | ||
| [key: string]: BBTag; | ||
| }); | ||
| tokenizeString(str: string): Token[]; | ||
| getTokens(str: string): Token[]; | ||
| } |
+164
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.Tokenizer = exports.asTextToken = exports.tagToken = exports.textToken = exports.Token = exports.TokenType = void 0; | ||
| var TokenType; | ||
| (function (TokenType) { | ||
| TokenType[TokenType["Text"] = 0] = "Text"; | ||
| TokenType[TokenType["StartTag"] = 1] = "StartTag"; | ||
| TokenType[TokenType["EndTag"] = 2] = "EndTag"; | ||
| })(TokenType = exports.TokenType || (exports.TokenType = {})); | ||
| //Represents a token | ||
| var Token = /** @class */ (function () { | ||
| function Token(tokenType, content, tagAttributes, tagStr) { | ||
| this.tokenType = tokenType; | ||
| this.content = content; | ||
| this.tagAttributes = tagAttributes; | ||
| this.tagStr = tagStr; | ||
| } | ||
| //String representation of the token | ||
| Token.prototype.toString = function () { | ||
| return this.content + " (" + TokenType[this.tokenType] + ")"; | ||
| }; | ||
| //Check for equality | ||
| Token.prototype.equals = function (token) { | ||
| return this.tokenType == token.tokenType && this.content == token.content; | ||
| }; | ||
| return Token; | ||
| }()); | ||
| exports.Token = Token; | ||
| //Creates a new text token | ||
| function textToken(content) { | ||
| return new Token(TokenType.Text, content); | ||
| } | ||
| exports.textToken = textToken; | ||
| var attributeNameChars = "[a-zA-Z0-9\\.\\-_:;/]"; | ||
| var attributeValueChars = "[a-zA-Z0-9\\.\\-_:;#/\\s]"; | ||
| var tokenPattern = "\\[(\\/\\w*)\\]|\\[(\\w*)+(?:=(" + attributeValueChars + "*))?(?: (" + attributeNameChars + "+)=(" + attributeValueChars + "+))*\\]|\\[\\*\\] ?(['\\.,\\-:;#/\\w\\s]+)"; | ||
| //Creates a new tag token | ||
| function tagToken(match) { | ||
| var _a; | ||
| if (match[1] == undefined) { | ||
| //Start tag | ||
| var tagName = match[2]; | ||
| var attributes = {}; | ||
| var attributePattern = new RegExp("(" + attributeNameChars + "+)?=(" + attributeValueChars + "+)", "g"); | ||
| var attributeStr = match[0].substr(1 + tagName.length, match[0].length - 2 - tagName.length); | ||
| var attributeMatch = void 0; | ||
| while ((attributeMatch = attributePattern.exec(attributeStr))) { | ||
| var value = (_a = attributeMatch[2]) === null || _a === void 0 ? void 0 : _a.trim(); | ||
| if (attributeMatch[1] == undefined) { | ||
| //The tag attribute | ||
| attributes[tagName] = value; | ||
| } | ||
| else { | ||
| //Normal attribute | ||
| attributes[attributeMatch[1]] = value; | ||
| } | ||
| } | ||
| return new Token(TokenType.StartTag, tagName, attributes, match[0]); | ||
| } | ||
| else { | ||
| //End tag | ||
| return new Token(TokenType.EndTag, match[1].substr(1, match[1].length - 1)); | ||
| } | ||
| } | ||
| exports.tagToken = tagToken; | ||
| //Converts the given token to a text token | ||
| function asTextToken(token) { | ||
| var _a; | ||
| if (token.tokenType == TokenType.StartTag) { | ||
| token.content = (_a = token.tagStr) !== null && _a !== void 0 ? _a : ""; | ||
| token.tokenType = TokenType.Text; | ||
| //delete token.attributes; | ||
| //delete token.tagStr; | ||
| } | ||
| if (token.tokenType == TokenType.EndTag) { | ||
| token.content = "[/" + token.content + "]"; | ||
| token.tokenType = TokenType.Text; | ||
| } | ||
| } | ||
| exports.asTextToken = asTextToken; | ||
| //Represents a tokenizer | ||
| var Tokenizer = /** @class */ (function () { | ||
| //Creates a new tokenizer with the given tags | ||
| function Tokenizer(bbTags) { | ||
| this.bbTags = bbTags; | ||
| } | ||
| //Tokenizes the given string | ||
| Tokenizer.prototype.tokenizeString = function (str) { | ||
| var tokens = this.getTokens(str); | ||
| var newTokens = []; | ||
| var noNesting = false; | ||
| var noNestingTag = ""; | ||
| var noNestedTagContent = ""; | ||
| for (var i in tokens) { | ||
| var currentToken = tokens[i]; | ||
| var bbTag = this.bbTags[currentToken.content]; | ||
| var addTag = true; | ||
| //Replace invalid tags with text | ||
| if (bbTag === undefined && !noNesting) { | ||
| asTextToken(currentToken); | ||
| } | ||
| else { | ||
| //Check if current tag doesn't support nesting | ||
| if (noNesting) { | ||
| if (currentToken.tokenType == TokenType.EndTag && currentToken.content == noNestingTag) { | ||
| noNesting = false; | ||
| newTokens.push(textToken(noNestedTagContent)); | ||
| } | ||
| else { | ||
| asTextToken(currentToken); | ||
| noNestedTagContent += currentToken.content; | ||
| addTag = false; | ||
| } | ||
| } | ||
| else { | ||
| if (bbTag.noNesting && currentToken.tokenType == TokenType.StartTag) { | ||
| noNesting = true; | ||
| noNestingTag = currentToken.content; | ||
| noNestedTagContent = ""; | ||
| } | ||
| } | ||
| } | ||
| if (addTag) { | ||
| newTokens.push(currentToken); | ||
| } | ||
| } | ||
| return newTokens; | ||
| }; | ||
| //Gets the tokens from the given string | ||
| Tokenizer.prototype.getTokens = function (str) { | ||
| var tagPattern = new RegExp(tokenPattern, "g"); | ||
| var tokens = []; | ||
| var match; | ||
| var lastIndex = 0; | ||
| while ((match = tagPattern.exec(str))) { | ||
| var deltaInner = match.index - lastIndex; | ||
| if (deltaInner > 0) { | ||
| tokens.push(textToken(str.substr(lastIndex, deltaInner))); | ||
| } | ||
| if (match[6]) { | ||
| //Is [*] List Item | ||
| var tokenStart = new Token(TokenType.StartTag, "*", {}, "[*]"); | ||
| var tokenText = textToken(match[6]); | ||
| var tokenEnd = new Token(TokenType.EndTag, "*"); | ||
| tokens.push(tokenStart); | ||
| tokens.push(tokenText); | ||
| tokens.push(tokenEnd); | ||
| } | ||
| else { | ||
| var token = tagToken(match); | ||
| tokens.push(token); | ||
| } | ||
| lastIndex = tagPattern.lastIndex; | ||
| } | ||
| var delta = str.length - lastIndex; | ||
| if (delta > 0) { | ||
| tokens.push(textToken(str.substr(lastIndex, delta))); | ||
| } | ||
| return tokens; | ||
| }; | ||
| return Tokenizer; | ||
| }()); | ||
| exports.Tokenizer = Tokenizer; | ||
| //# sourceMappingURL=tokenizer.js.map |
| {"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../src/tokenizer.ts"],"names":[],"mappings":"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"} |
+1
-5
@@ -1,5 +0,1 @@ | ||
| export declare class BBTag { | ||
| private readonly _name; | ||
| constructor(_name: string); | ||
| get name(): string; | ||
| } | ||
| export { BBCodeParser } from "./bbcodeparser"; |
+3
-15
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.BBTag = void 0; | ||
| var BBTag = /** @class */ (function () { | ||
| function BBTag(_name) { | ||
| this._name = _name; | ||
| } | ||
| Object.defineProperty(BBTag.prototype, "name", { | ||
| get: function () { | ||
| return this._name; | ||
| }, | ||
| enumerable: false, | ||
| configurable: true | ||
| }); | ||
| return BBTag; | ||
| }()); | ||
| exports.BBTag = BBTag; | ||
| exports.BBCodeParser = void 0; | ||
| var bbcodeparser_1 = require("./bbcodeparser"); | ||
| Object.defineProperty(exports, "BBCodeParser", { enumerable: true, get: function () { return bbcodeparser_1.BBCodeParser; } }); | ||
| //# sourceMappingURL=index.js.map |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA;IACI,eAA6B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAE9C,sBAAI,uBAAI;aAAR;YACI,OAAO,IAAI,CAAC,KAAK,CAAC;QACtB,CAAC;;;OAAA;IACL,YAAC;AAAD,CAAC,AAND,IAMC;AANY,sBAAK"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+CAA8C;AAArC,4GAAA,YAAY,OAAA"} |
+7
-2
| { | ||
| "name": "@panzer1119/bbcode-parser", | ||
| "version": "1.0.0", | ||
| "version": "1.0.1", | ||
| "description": "BB code parser written in TypeScript.", | ||
@@ -12,3 +12,8 @@ "main": "lib/index.js", | ||
| "test": "jest --config jestconfig.json", | ||
| "build": "tsc" | ||
| "build": "tsc", | ||
| "format": "prettier --write \"src/**/*.ts\" \"src/**/*.js\"", | ||
| "prepare": "npm run build", | ||
| "prepublishOnly": "npm test", | ||
| "version": "npm run format && git add -A src", | ||
| "postversion": "git push && git push --tags" | ||
| }, | ||
@@ -15,0 +20,0 @@ "repository": { |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
42548
691.59%18
200%554
2418.18%1
Infinity%