UNPKG

@bbob/parser

Version:

A BBCode to AST Parser part of @bbob

227 lines (226 loc) 6.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { COLUMN_ID: function() { return COLUMN_ID; }, END_POS_ID: function() { return END_POS_ID; }, LINE_ID: function() { return LINE_ID; }, START_POS_ID: function() { return START_POS_ID; }, TYPE_ATTR_NAME: function() { return TYPE_ATTR_NAME; }, TYPE_ATTR_VALUE: function() { return TYPE_ATTR_VALUE; }, TYPE_ID: function() { return TYPE_ID; }, TYPE_NEW_LINE: function() { return TYPE_NEW_LINE; }, TYPE_SPACE: function() { return TYPE_SPACE; }, TYPE_TAG: function() { return TYPE_TAG; }, TYPE_WORD: function() { return TYPE_WORD; }, Token: function() { return Token; }, VALUE_ID: function() { return VALUE_ID; }, default: function() { return _default; } }); var _pluginhelper = require("@bbob/plugin-helper"); function _defineProperties(target, props) { for(var i = 0; i < props.length; i++){ var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _create_class(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } // type, value, line, row, start pos, end pos var TOKEN_TYPE_ID = "t"; // 0; var TOKEN_VALUE_ID = "v"; // 1; var TOKEN_COLUMN_ID = "r"; // 2; var TOKEN_LINE_ID = "l"; // 3; var TOKEN_START_POS_ID = "s"; // 4; var TOKEN_END_POS_ID = "e"; // 5; var TOKEN_TYPE_WORD = 1; // 'word'; var TOKEN_TYPE_TAG = 2; // 'tag'; var TOKEN_TYPE_ATTR_NAME = 3; // 'attr-name'; var TOKEN_TYPE_ATTR_VALUE = 4; // 'attr-value'; var TOKEN_TYPE_SPACE = 5; // 'space'; var TOKEN_TYPE_NEW_LINE = 6; // 'new-line'; var getTokenValue = function(token) { if (token && typeof token[TOKEN_VALUE_ID] !== "undefined") { return token[TOKEN_VALUE_ID]; } return ""; }; var getTokenLine = function(token) { return token && token[TOKEN_LINE_ID] || 0; }; var getTokenColumn = function(token) { return token && token[TOKEN_COLUMN_ID] || 0; }; var getStartPosition = function(token) { return token && token[TOKEN_START_POS_ID] || 0; }; var getEndPosition = function(token) { return token && token[TOKEN_END_POS_ID] || 0; }; var isTextToken = function(token) { if (token && typeof token[TOKEN_TYPE_ID] !== "undefined") { return token[TOKEN_TYPE_ID] === TOKEN_TYPE_SPACE || token[TOKEN_TYPE_ID] === TOKEN_TYPE_NEW_LINE || token[TOKEN_TYPE_ID] === TOKEN_TYPE_WORD; } return false; }; var isTagToken = function(token) { if (token && typeof token[TOKEN_TYPE_ID] !== "undefined") { return token[TOKEN_TYPE_ID] === TOKEN_TYPE_TAG; } return false; }; var isTagEnd = function(token) { return getTokenValue(token).charCodeAt(0) === _pluginhelper.SLASH.charCodeAt(0); }; var isTagStart = function(token) { return !isTagEnd(token); }; var isAttrNameToken = function(token) { if (token && typeof token[TOKEN_TYPE_ID] !== "undefined") { return token[TOKEN_TYPE_ID] === TOKEN_TYPE_ATTR_NAME; } return false; }; var isAttrValueToken = function(token) { if (token && typeof token[TOKEN_TYPE_ID] !== "undefined") { return token[TOKEN_TYPE_ID] === TOKEN_TYPE_ATTR_VALUE; } return false; }; var getTagName = function(token) { var value = getTokenValue(token); return isTagEnd(token) ? value.slice(1) : value; }; var tokenToText = function(token, openTag, closeTag) { if (openTag === void 0) openTag = _pluginhelper.OPEN_BRAKET; if (closeTag === void 0) closeTag = _pluginhelper.CLOSE_BRAKET; var text = openTag; text += getTokenValue(token); text += closeTag; return text; }; /** * @export * @class Token */ var Token = /*#__PURE__*/ function() { "use strict"; function Token(type, value, row, col, start, end) { if (row === void 0) row = 0; if (col === void 0) col = 0; if (start === void 0) start = 0; if (end === void 0) end = 0; this[TOKEN_LINE_ID] = row; this[TOKEN_COLUMN_ID] = col; this[TOKEN_TYPE_ID] = type || 0; this[TOKEN_VALUE_ID] = String(value); this[TOKEN_START_POS_ID] = start; this[TOKEN_END_POS_ID] = end; } var _proto = Token.prototype; _proto.isEmpty = function isEmpty() { return this[TOKEN_TYPE_ID] === 0 || isNaN(this[TOKEN_TYPE_ID]); }; _proto.isText = function isText() { return isTextToken(this); }; _proto.isTag = function isTag() { return isTagToken(this); }; _proto.isAttrName = function isAttrName() { return isAttrNameToken(this); }; _proto.isAttrValue = function isAttrValue() { return isAttrValueToken(this); }; _proto.isStart = function isStart() { return isTagStart(this); }; _proto.isEnd = function isEnd() { return isTagEnd(this); }; _proto.getName = function getName() { return getTagName(this); }; _proto.getValue = function getValue() { return getTokenValue(this); }; _proto.getLine = function getLine() { return getTokenLine(this); }; _proto.getColumn = function getColumn() { return getTokenColumn(this); }; _proto.getStart = function getStart() { return getStartPosition(this); }; _proto.getEnd = function getEnd() { return getEndPosition(this); }; _proto.toString = function toString(param) { var _ref = param === void 0 ? {} : param, _ref_openTag = _ref.openTag, openTag = _ref_openTag === void 0 ? _pluginhelper.OPEN_BRAKET : _ref_openTag, _ref_closeTag = _ref.closeTag, closeTag = _ref_closeTag === void 0 ? _pluginhelper.CLOSE_BRAKET : _ref_closeTag; return tokenToText(this, openTag, closeTag); }; _create_class(Token, [ { key: "type", get: function get() { return this[TOKEN_TYPE_ID]; } } ]); return Token; }(); var TYPE_ID = TOKEN_TYPE_ID; var VALUE_ID = TOKEN_VALUE_ID; var LINE_ID = TOKEN_LINE_ID; var COLUMN_ID = TOKEN_COLUMN_ID; var START_POS_ID = TOKEN_START_POS_ID; var END_POS_ID = TOKEN_END_POS_ID; var TYPE_WORD = TOKEN_TYPE_WORD; var TYPE_TAG = TOKEN_TYPE_TAG; var TYPE_ATTR_NAME = TOKEN_TYPE_ATTR_NAME; var TYPE_ATTR_VALUE = TOKEN_TYPE_ATTR_VALUE; var TYPE_SPACE = TOKEN_TYPE_SPACE; var TYPE_NEW_LINE = TOKEN_TYPE_NEW_LINE; var _default = Token;