Socket
Socket
Sign inDemoInstall

@bbob/parser

Package Overview
Dependencies
Maintainers
1
Versions
53
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@bbob/parser - npm Package Compare versions

Comparing version 1.3.0 to 1.3.1

dist/index.js

19

lib/index.js

@@ -1,1 +0,18 @@

module.exports = require('./parse');
'use strict';
exports.__esModule = true;
var _parse = require('./parse');
Object.defineProperty(exports, 'parse', {
enumerable: true,
get: function get() {
return _parse.parse;
}
});
Object.defineProperty(exports, 'createTagNode', {
enumerable: true,
get: function get() {
return _parse.createTagNode;
}
});

182

lib/lexer.js

@@ -1,37 +0,43 @@

/* eslint-disable no-plusplus,no-param-reassign */
const c = require('@bbob/plugin-helper/lib/char');
const Token = require('./Token');
'use strict';
const OPEN_BRAKET = c.getChar(c.OPEN_BRAKET);
const CLOSE_BRAKET = c.getChar(c.CLOSE_BRAKET);
const QUOTEMARK = c.getChar(c.QUOTEMARK);
const BACKSLASH = c.getChar(c.BACKSLASH);
const SLASH = c.getChar(c.SLASH);
const SPACE = c.getChar(c.SPACE);
const TAB = c.getChar(c.TAB);
const EQ = c.getChar(c.EQ);
const N = c.getChar(c.N);
exports.__esModule = true;
exports.createLexer = exports.createTokenOfType = undefined;
const RESERVED_CHARS = [CLOSE_BRAKET, OPEN_BRAKET, QUOTEMARK, BACKSLASH, SPACE, TAB, EQ, N];
const NOT_CHAR_TOKENS = [OPEN_BRAKET, SPACE, TAB, N];
const WHITESPACES = [SPACE, TAB];
var _char = require('@bbob/plugin-helper/lib/char');
const isCharReserved = char => (RESERVED_CHARS.indexOf(char) >= 0);
const isWhiteSpace = char => (WHITESPACES.indexOf(char) >= 0);
const isCharToken = char => (NOT_CHAR_TOKENS.indexOf(char) === -1);
var _Token = require('./Token');
const createCharGrabber = (source) => {
let idx = 0;
/* eslint-disable no-plusplus,no-param-reassign */
var RESERVED_CHARS = [_char.CLOSE_BRAKET, _char.OPEN_BRAKET, _char.QUOTEMARK, _char.BACKSLASH, _char.SPACE, _char.TAB, _char.EQ, _char.N];
var NOT_CHAR_TOKENS = [_char.OPEN_BRAKET, _char.SPACE, _char.TAB, _char.N];
var WHITESPACES = [_char.SPACE, _char.TAB];
const skip = () => {
var isCharReserved = function isCharReserved(char) {
return RESERVED_CHARS.indexOf(char) >= 0;
};
var isWhiteSpace = function isWhiteSpace(char) {
return WHITESPACES.indexOf(char) >= 0;
};
var isCharToken = function isCharToken(char) {
return NOT_CHAR_TOKENS.indexOf(char) === -1;
};
var createCharGrabber = function createCharGrabber(source) {
var idx = 0;
var skip = function skip() {
idx += 1;
};
const hasNext = () => source.length > idx;
var hasNext = function hasNext() {
return source.length > idx;
};
return {
skip,
hasNext,
isLast: () => (idx === source.length),
grabWhile: (cond) => {
const start = idx;
skip: skip,
hasNext: hasNext,
isLast: function isLast() {
return idx === source.length;
},
grabWhile: function grabWhile(cond) {
var start = idx;

@@ -44,9 +50,15 @@ while (hasNext() && cond(source[idx])) {

},
getNext: () => source[idx + 1],
getPrev: () => source[idx - 1],
getCurr: () => source[idx],
getNext: function getNext() {
return source[idx + 1];
},
getPrev: function getPrev() {
return source[idx - 1];
},
getCurr: function getCurr() {
return source[idx];
}
};
};
const trimChar = (str, charToRemove) => {
var trimChar = function trimChar(str, charToRemove) {
while (str.charAt(0) === charToRemove) {

@@ -63,12 +75,20 @@ str = str.substring(1);

const unquote = str => str.replace(BACKSLASH + QUOTEMARK, QUOTEMARK);
const createToken = (type, value, r = 0, cl = 0) => new Token(type, value, r, cl);
var unquote = function unquote(str) {
return str.replace(_char.BACKSLASH + _char.QUOTEMARK, _char.QUOTEMARK);
};
var createToken = function createToken(type, value) {
var r = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
var cl = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
return new _Token.Token(type, value, r, cl);
};
function createLexer(buffer, options = {}) {
let row = 0;
let col = 0;
function createLexer(buffer) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
let tokenIndex = -1;
const tokens = new Array(Math.floor(buffer.length));
const emitToken = (token) => {
var row = 0;
var col = 0;
var tokenIndex = -1;
var tokens = new Array(Math.floor(buffer.length));
var emitToken = function emitToken(token) {
if (options.onToken) {

@@ -82,12 +102,12 @@ options.onToken(token);

const parseAttrs = (str) => {
let tagName = null;
let skipSpaces = false;
var parseAttrs = function parseAttrs(str) {
var tagName = null;
var skipSpaces = false;
const attrTokens = [];
const attrCharGrabber = createCharGrabber(str);
const validAttr = (val) => {
const isEQ = val === EQ;
const isWS = isWhiteSpace(val);
const isPrevSLASH = attrCharGrabber.getPrev() === SLASH;
var attrTokens = [];
var attrCharGrabber = createCharGrabber(str);
var validAttr = function validAttr(val) {
var isEQ = val === _char.EQ;
var isWS = isWhiteSpace(val);
var isPrevSLASH = attrCharGrabber.getPrev() === _char.SLASH;

@@ -102,3 +122,3 @@ if (tagName === null) {

if (val === QUOTEMARK && !isPrevSLASH) {
if (val === _char.QUOTEMARK && !isPrevSLASH) {
skipSpaces = !skipSpaces;

@@ -110,4 +130,4 @@ }

const nextAttr = () => {
const attrStr = attrCharGrabber.grabWhile(validAttr);
var nextAttr = function nextAttr() {
var attrStr = attrCharGrabber.grabWhile(validAttr);

@@ -118,6 +138,6 @@ // first string before space is a tag name

} else if (isWhiteSpace(attrCharGrabber.getCurr()) || !attrCharGrabber.hasNext()) {
const escaped = unquote(trimChar(attrStr, QUOTEMARK));
attrTokens.push(createToken(Token.TYPE_ATTR_VALUE, escaped, row, col));
var escaped = unquote(trimChar(attrStr, _char.QUOTEMARK));
attrTokens.push(createToken(_Token.TYPE_ATTR_VALUE, escaped, row, col));
} else {
attrTokens.push(createToken(Token.TYPE_ATTR_NAME, attrStr, row, col));
attrTokens.push(createToken(_Token.TYPE_ATTR_NAME, attrStr, row, col));
}

@@ -135,8 +155,8 @@

const grabber = createCharGrabber(buffer);
var grabber = createCharGrabber(buffer);
const next = () => {
const char = grabber.getCurr();
var next = function next() {
var char = grabber.getCurr();
if (char === N) {
if (char === _char.N) {
grabber.skip();

@@ -146,37 +166,39 @@ col = 0;

emitToken(createToken(Token.TYPE_NEW_LINE, char, row, col));
emitToken(createToken(_Token.TYPE_NEW_LINE, char, row, col));
} else if (isWhiteSpace(char)) {
const str = grabber.grabWhile(isWhiteSpace);
emitToken(createToken(Token.TYPE_SPACE, str, row, col));
} else if (char === OPEN_BRAKET) {
const nextChar = grabber.getNext();
var str = grabber.grabWhile(isWhiteSpace);
emitToken(createToken(_Token.TYPE_SPACE, str, row, col));
} else if (char === _char.OPEN_BRAKET) {
var nextChar = grabber.getNext();
grabber.skip(); // skip [
if (isCharReserved(nextChar)) {
emitToken(createToken(Token.TYPE_WORD, char, row, col));
emitToken(createToken(_Token.TYPE_WORD, char, row, col));
} else {
const str = grabber.grabWhile(val => val !== CLOSE_BRAKET);
var _str = grabber.grabWhile(function (val) {
return val !== _char.CLOSE_BRAKET;
});
grabber.skip(); // skip ]
if (!(str.indexOf(EQ) > 0) || str[0] === SLASH) {
emitToken(createToken(Token.TYPE_TAG, str, row, col));
if (!(_str.indexOf(_char.EQ) > 0) || _str[0] === _char.SLASH) {
emitToken(createToken(_Token.TYPE_TAG, _str, row, col));
} else {
const parsed = parseAttrs(str);
var parsed = parseAttrs(_str);
emitToken(createToken(Token.TYPE_TAG, parsed.tag, row, col));
emitToken(createToken(_Token.TYPE_TAG, parsed.tag, row, col));
parsed.attrs.map(emitToken);
}
}
} else if (char === CLOSE_BRAKET) {
} else if (char === _char.CLOSE_BRAKET) {
grabber.skip();
emitToken(createToken(Token.TYPE_WORD, char, row, col));
emitToken(createToken(_Token.TYPE_WORD, char, row, col));
} else if (isCharToken(char)) {
const str = grabber.grabWhile(isCharToken);
var _str2 = grabber.grabWhile(isCharToken);
emitToken(createToken(Token.TYPE_WORD, str, row, col));
emitToken(createToken(_Token.TYPE_WORD, _str2, row, col));
}
};
const tokenize = () => {
var tokenize = function tokenize() {
while (grabber.hasNext()) {

@@ -191,4 +213,4 @@ next();

const isTokenNested = (token) => {
const value = OPEN_BRAKET + SLASH + token.getValue();
var isTokenNested = function isTokenNested(token) {
var value = _char.OPEN_BRAKET + _char.SLASH + token.getValue();
return buffer.indexOf(value) > -1;

@@ -198,8 +220,8 @@ };

return {
tokenize,
isTokenNested,
tokenize: tokenize,
isTokenNested: isTokenNested
};
}
module.exports = createLexer;
module.exports.createTokenOfType = createToken;
var createTokenOfType = exports.createTokenOfType = createToken;
exports.createLexer = createLexer;

@@ -1,4 +0,14 @@

const createLexer = require('./lexer');
const TagNode = require('@bbob/plugin-helper/lib/TagNode');
'use strict';
exports.__esModule = true;
exports.parse = exports.createTagNode = undefined;
var _TagNode = require('@bbob/plugin-helper/lib/TagNode');
var _TagNode2 = _interopRequireDefault(_TagNode);
var _lexer = require('./lexer');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**

@@ -8,3 +18,3 @@ * @private

*/
let nodes;
var nodes = void 0;
/**

@@ -14,3 +24,3 @@ * @private

*/
let nestedNodes;
var nestedNodes = void 0;
/**

@@ -20,3 +30,3 @@ * @private

*/
let tagNodes;
var tagNodes = void 0;
/**

@@ -26,11 +36,13 @@ * @private

*/
let tagNodesAttrName;
var tagNodesAttrName = void 0;
let options = {};
let tokenizer = null;
var options = {};
var tokenizer = null;
// eslint-disable-next-line no-unused-vars
let tokens = null;
var tokens = null;
const createTokenizer = (input, onToken) => createLexer(input, { onToken });
var createTokenizer = function createTokenizer(input, onToken) {
return (0, _lexer.createLexer)(input, { onToken: onToken });
};

@@ -42,3 +54,5 @@ /**

*/
const isTagNested = token => tokenizer.isTokenNested(token);
var isTagNested = function isTagNested(token) {
return tokenizer.isTokenNested(token);
};

@@ -49,3 +63,5 @@ /**

*/
const getTagNode = () => (tagNodes.length ? tagNodes[tagNodes.length - 1] : null);
var getTagNode = function getTagNode() {
return tagNodes.length ? tagNodes[tagNodes.length - 1] : null;
};

@@ -57,3 +73,5 @@ /**

*/
const createTagNode = token => tagNodes.push(TagNode.create(token.getValue()));
var createTagNode = function createTagNode(token) {
return tagNodes.push(_TagNode2.default.create(token.getValue()));
};
/**

@@ -64,3 +82,5 @@ * @private

*/
const createTagNodeAttrName = token => tagNodesAttrName.push(token.getValue());
var createTagNodeAttrName = function createTagNodeAttrName(token) {
return tagNodesAttrName.push(token.getValue());
};

@@ -71,4 +91,5 @@ /**

*/
const getTagNodeAttrName = () =>
(tagNodesAttrName.length ? tagNodesAttrName[tagNodesAttrName.length - 1] : getTagNode().tag);
var getTagNodeAttrName = function getTagNodeAttrName() {
return tagNodesAttrName.length ? tagNodesAttrName[tagNodesAttrName.length - 1] : getTagNode().tag;
};

@@ -79,3 +100,3 @@ /**

*/
const clearTagNodeAttrName = () => {
var clearTagNodeAttrName = function clearTagNodeAttrName() {
if (tagNodesAttrName.length) {

@@ -90,3 +111,3 @@ tagNodesAttrName.pop();

*/
const clearTagNode = () => {
var clearTagNode = function clearTagNode() {
if (tagNodes.length) {

@@ -103,5 +124,5 @@ tagNodes.pop();

*/
const getNodes = () => {
var getNodes = function getNodes() {
if (nestedNodes.length) {
const nestedNode = nestedNodes[nestedNodes.length - 1];
var nestedNode = nestedNodes[nestedNodes.length - 1];
return nestedNode.content;

@@ -117,3 +138,3 @@ }

*/
const appendNode = (tag) => {
var appendNode = function appendNode(tag) {
getNodes().push(tag);

@@ -127,3 +148,3 @@ };

*/
const isAllowedTag = (value) => {
var isAllowedTag = function isAllowedTag(value) {
if (options.onlyAllowTags && options.onlyAllowTags.length) {

@@ -139,3 +160,3 @@ return options.onlyAllowTags.indexOf(value) >= 0;

*/
const handleTagStart = (token) => {
var handleTagStart = function handleTagStart(token) {
if (token.isStart()) {

@@ -157,7 +178,7 @@ createTagNode(token);

*/
const handleTagEnd = (token) => {
var handleTagEnd = function handleTagEnd(token) {
if (token.isEnd()) {
clearTagNode();
const lastNestedNode = nestedNodes.pop();
var lastNestedNode = nestedNodes.pop();

@@ -167,9 +188,9 @@ if (lastNestedNode) {

} else if (options.onError) {
const tag = token.getValue();
const line = token.getLine();
const column = token.getColumn();
var tag = token.getValue();
var line = token.getLine();
var column = token.getColumn();
options.onError({
message: `Inconsistent tag '${tag}' on line ${line} and column ${column}`,
message: 'Inconsistent tag \'' + tag + '\' on line ' + line + ' and column ' + column,
lineNumber: line,
columnNumber: column,
columnNumber: column
});

@@ -184,3 +205,3 @@ }

*/
const handleTagToken = (token) => {
var handleTagToken = function handleTagToken(token) {
if (token.isTag()) {

@@ -203,4 +224,4 @@ if (isAllowedTag(token.getName())) {

*/
const handleTagNode = (token) => {
const tagNode = getTagNode();
var handleTagNode = function handleTagNode(token) {
var tagNode = getTagNode();

@@ -226,3 +247,3 @@ if (tagNode) {

*/
const parseToken = (token) => {
var parseToken = function parseToken(token) {
handleTagToken(token);

@@ -236,3 +257,5 @@ handleTagNode(token);

*/
const parse = (input, opts = {}) => {
var parse = function parse(input) {
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
options = opts;

@@ -251,3 +274,4 @@ tokenizer = (opts.createTokenizer ? opts.createTokenizer : createTokenizer)(input, parseToken);

module.exports = parse;
module.exports.createTagNode = createTagNode;
exports.createTagNode = createTagNode;
exports.parse = parse;
exports.default = parse;

@@ -1,38 +0,55 @@

const {
getChar,
OPEN_BRAKET,
CLOSE_BRAKET,
SLASH,
} = require('@bbob/plugin-helper/lib/char');
'use strict';
exports.__esModule = true;
exports.Token = exports.TYPE_NEW_LINE = exports.TYPE_SPACE = exports.TYPE_ATTR_VALUE = exports.TYPE_ATTR_NAME = exports.TYPE_TAG = exports.TYPE_WORD = exports.COLUMN_ID = exports.LINE_ID = exports.VALUE_ID = exports.TYPE_ID = undefined;
var _char = require('@bbob/plugin-helper/lib/char');
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
// type, value, line, row,
const TOKEN_TYPE_ID = 'type'; // 0;
const TOKEN_VALUE_ID = 'value'; // 1;
const TOKEN_COLUMN_ID = 'row'; // 2;
const TOKEN_LINE_ID = 'line'; // 3;
var TOKEN_TYPE_ID = 'type'; // 0;
var TOKEN_VALUE_ID = 'value'; // 1;
var TOKEN_COLUMN_ID = 'row'; // 2;
var TOKEN_LINE_ID = 'line'; // 3;
const TOKEN_TYPE_WORD = 'word';
const TOKEN_TYPE_TAG = 'tag';
const TOKEN_TYPE_ATTR_NAME = 'attr-name';
const TOKEN_TYPE_ATTR_VALUE = 'attr-value';
const TOKEN_TYPE_SPACE = 'space';
const TOKEN_TYPE_NEW_LINE = 'new-line';
var TOKEN_TYPE_WORD = 'word';
var TOKEN_TYPE_TAG = 'tag';
var TOKEN_TYPE_ATTR_NAME = 'attr-name';
var TOKEN_TYPE_ATTR_VALUE = 'attr-value';
var TOKEN_TYPE_SPACE = 'space';
var TOKEN_TYPE_NEW_LINE = 'new-line';
const getTokenValue = token => token[TOKEN_VALUE_ID];
const getTokenLine = token => token[TOKEN_LINE_ID];
const getTokenColumn = token => token[TOKEN_COLUMN_ID];
var getTokenValue = function getTokenValue(token) {
return token[TOKEN_VALUE_ID];
};
var getTokenLine = function getTokenLine(token) {
return token[TOKEN_LINE_ID];
};
var getTokenColumn = function getTokenColumn(token) {
return token[TOKEN_COLUMN_ID];
};
const isTextToken = token =>
token[TOKEN_TYPE_ID] === TOKEN_TYPE_SPACE ||
token[TOKEN_TYPE_ID] === TOKEN_TYPE_NEW_LINE ||
token[TOKEN_TYPE_ID] === TOKEN_TYPE_WORD;
var isTextToken = function isTextToken(token) {
return token[TOKEN_TYPE_ID] === TOKEN_TYPE_SPACE || token[TOKEN_TYPE_ID] === TOKEN_TYPE_NEW_LINE || token[TOKEN_TYPE_ID] === TOKEN_TYPE_WORD;
};
const isTagToken = token => token[TOKEN_TYPE_ID] === TOKEN_TYPE_TAG;
const isTagEnd = token => getTokenValue(token).charCodeAt(0) === SLASH;
const isTagStart = token => !isTagEnd(token);
const isAttrNameToken = token => token[TOKEN_TYPE_ID] === TOKEN_TYPE_ATTR_NAME;
const isAttrValueToken = token => token[TOKEN_TYPE_ID] === TOKEN_TYPE_ATTR_VALUE;
var isTagToken = function isTagToken(token) {
return token[TOKEN_TYPE_ID] === TOKEN_TYPE_TAG;
};
var isTagEnd = function isTagEnd(token) {
return getTokenValue(token).charCodeAt(0) === _char.SLASH.charCodeAt(0);
};
var isTagStart = function isTagStart(token) {
return !isTagEnd(token);
};
var isAttrNameToken = function isAttrNameToken(token) {
return token[TOKEN_TYPE_ID] === TOKEN_TYPE_ATTR_NAME;
};
var isAttrValueToken = function isAttrValueToken(token) {
return token[TOKEN_TYPE_ID] === TOKEN_TYPE_ATTR_VALUE;
};
const getTagName = (token) => {
const value = getTokenValue(token);
var getTagName = function getTagName(token) {
var value = getTokenValue(token);

@@ -42,11 +59,11 @@ return isTagEnd(token) ? value.slice(1) : value;

const convertTagToText = (token) => {
let text = getChar(OPEN_BRAKET);
var convertTagToText = function convertTagToText(token) {
var text = _char.OPEN_BRAKET;
if (isTagEnd(token)) {
text += getChar(SLASH);
text += _char.SLASH;
}
text += getTokenValue(token);
text += getChar(CLOSE_BRAKET);
text += _char.CLOSE_BRAKET;

@@ -56,4 +73,6 @@ return text;

class Token {
constructor(type, value, line, row) {
var Token = function () {
function Token(type, value, line, row) {
_classCallCheck(this, Token);
this.type = String(type);

@@ -65,62 +84,64 @@ this.value = String(value);

isEmpty() {
Token.prototype.isEmpty = function isEmpty() {
return !!this.type;
}
};
isText() {
Token.prototype.isText = function isText() {
return isTextToken(this);
}
};
isTag() {
Token.prototype.isTag = function isTag() {
return isTagToken(this);
}
};
isAttrName() {
Token.prototype.isAttrName = function isAttrName() {
return isAttrNameToken(this);
}
};
isAttrValue() {
Token.prototype.isAttrValue = function isAttrValue() {
return isAttrValueToken(this);
}
};
isStart() {
Token.prototype.isStart = function isStart() {
return isTagStart(this);
}
};
isEnd() {
Token.prototype.isEnd = function isEnd() {
return isTagEnd(this);
}
};
getName() {
Token.prototype.getName = function getName() {
return getTagName(this);
}
};
getValue() {
Token.prototype.getValue = function getValue() {
return getTokenValue(this);
}
};
getLine() {
Token.prototype.getLine = function getLine() {
return getTokenLine(this);
}
};
getColumn() {
Token.prototype.getColumn = function getColumn() {
return getTokenColumn(this);
}
};
toString() {
Token.prototype.toString = function toString() {
return convertTagToText(this);
}
}
};
module.exports = Token;
return Token;
}();
module.exports.TYPE_ID = TOKEN_TYPE_ID;
module.exports.VALUE_ID = TOKEN_VALUE_ID;
module.exports.LINE_ID = TOKEN_LINE_ID;
module.exports.COLUMN_ID = TOKEN_COLUMN_ID;
module.exports.TYPE_WORD = TOKEN_TYPE_WORD;
module.exports.TYPE_TAG = TOKEN_TYPE_TAG;
module.exports.TYPE_ATTR_NAME = TOKEN_TYPE_ATTR_NAME;
module.exports.TYPE_ATTR_VALUE = TOKEN_TYPE_ATTR_VALUE;
module.exports.TYPE_SPACE = TOKEN_TYPE_SPACE;
module.exports.TYPE_NEW_LINE = TOKEN_TYPE_NEW_LINE;
var TYPE_ID = exports.TYPE_ID = TOKEN_TYPE_ID;
var VALUE_ID = exports.VALUE_ID = TOKEN_VALUE_ID;
var LINE_ID = exports.LINE_ID = TOKEN_LINE_ID;
var COLUMN_ID = exports.COLUMN_ID = TOKEN_COLUMN_ID;
var TYPE_WORD = exports.TYPE_WORD = TOKEN_TYPE_WORD;
var TYPE_TAG = exports.TYPE_TAG = TOKEN_TYPE_TAG;
var TYPE_ATTR_NAME = exports.TYPE_ATTR_NAME = TOKEN_TYPE_ATTR_NAME;
var TYPE_ATTR_VALUE = exports.TYPE_ATTR_VALUE = TOKEN_TYPE_ATTR_VALUE;
var TYPE_SPACE = exports.TYPE_SPACE = TOKEN_TYPE_SPACE;
var TYPE_NEW_LINE = exports.TYPE_NEW_LINE = TOKEN_TYPE_NEW_LINE;
exports.Token = Token;
exports.default = Token;
{
"name": "@bbob/parser",
"version": "1.3.0",
"description": "Fast, flexible, and lean implementation of BBcode parser",
"homepage": "https://github.com/JiLiZART/bbob",
"version": "1.3.1",
"description": "Just parses BBcode to AST array",
"keywords": [
"bbcode",
"parser",
"fast",
"ast",
"bbcode parser",
"bbcodeparser",
"bbob",
"serializer",
"bbcode serializer",
"bbcode serializer",
"bbcodeserializer",
"parse",
"serialize",
"html"
"array",
"parse"
],
"main": "lib/index.js",
"dependencies": {
"@bbob/plugin-helper": "^1.1.0"
"@bbob/plugin-helper": "^1.1.1"
},
"main": "lib/index.js",
"module": "es/index.js",
"jsnext:main": "es/index.js",
"browser": "dist/index.js",
"browserName": "BbobParser",
"homepage": "https://github.com/JiLiZART/bbob",
"author": "Nikolay Kostyurin <jilizart@gmail.com>",
"license": "MIT",
"bugs": {
"url": "https://github.com/JiLiZART/bbob/issues"
},
"repository": {

@@ -30,4 +34,6 @@ "type": "git",

"scripts": {
"build": "../../node_modules/.bin/rollup -c",
"dev": "../../node_modules/.bin/rollup -c -w",
"build:commonjs": "../../node_modules/.bin/cross-env BABEL_ENV=commonjs ../../node_modules/.bin/babel src --out-dir lib",
"build:es": "../../node_modules/.bin/cross-env BABEL_ENV=es ../../node_modules/.bin/babel src --out-dir es",
"build:umd": "../../node_modules/.bin/cross-env BABEL_ENV=rollup NODE_ENV=development ../../node_modules/.bin/rollup --config ../../rollup.config.js",
"build": "npm run build:commonjs && npm run build:es && npm run build:umd",
"test": "../../node_modules/.bin/jest --",

@@ -38,4 +44,2 @@ "cover": "../../node_modules/.bin/jest --coverage",

},
"author": "Nikolay Kostyurin <jilizart@gmail.com>",
"license": "MIT",
"size-limit": [

@@ -50,4 +54,7 @@ {

"files": [
"lib"
"dist",
"lib",
"src",
"es"
]
}

@@ -8,4 +8,12 @@ # @bbob/parser

## Install
```bash
npm i @bbob/parser
```
## Usage
### API
```js

@@ -21,3 +29,3 @@ import parse from '@bbob/parser'

## Results
**Results to**

@@ -35,1 +43,15 @@ ```json

```
### PostHTML
```js
import render from 'posthtml-render'
import parse from '@bbob/parser'
const options = {
onlyAllowTags: ['url', 'h'],
onError: (err) => console.warn(err.message, err.lineNumber, err.columnNumber)
}
const ast = parse('[url=https://github.com]hello world![/url]', options)
const html = render(ast) // <url url="https://github.com">hello world!</url>
```
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc