@bbob/html
Advanced tools
Comparing version 2.2.0 to 2.3.1
@@ -6,2 +6,10 @@ # Change Log | ||
<a name="2.3.1"></a> | ||
## [2.3.1](https://github.com/JiLiZART/bbob/compare/v2.3.0...v2.3.1) (2019-03-04) | ||
**Note:** Version bump only for package @bbob/html | ||
<a name="2.2.0"></a> | ||
@@ -8,0 +16,0 @@ # 2.2.0 (2018-10-11) |
@@ -8,3 +8,3 @@ (function (global, factory) { | ||
function unwrapExports (x) { | ||
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; | ||
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x; | ||
} | ||
@@ -282,6 +282,2 @@ | ||
if (isTagEnd(token)) { | ||
text += char_11; | ||
} | ||
text += getTokenValue(token); | ||
@@ -366,6 +362,16 @@ text += char_10; | ||
/* eslint-disable no-plusplus,no-param-reassign */ | ||
/** | ||
* @typedef {Object} CharGrabber | ||
* @property {Function} skip | ||
* @property {Function} hasNext | ||
* @property {Function} isLast | ||
* @property {Function} grabWhile | ||
*/ | ||
var EM = '!'; | ||
/** | ||
* Creates a grabber wrapper for source string, that helps to iterate over string char by char | ||
* @param {String} source | ||
* @param {Function} onSkip | ||
* @returns | ||
*/ | ||
var createCharGrabber = function createCharGrabber(source) { | ||
@@ -390,2 +396,5 @@ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, | ||
}; | ||
var getCurr = function getCurr() { | ||
return source[idx]; | ||
}; | ||
@@ -401,3 +410,3 @@ return { | ||
while (hasNext() && cond(source[idx])) { | ||
while (hasNext() && cond(getCurr())) { | ||
skip(); | ||
@@ -414,6 +423,9 @@ } | ||
}, | ||
getCurr: function getCurr() { | ||
return source[idx]; | ||
}, | ||
getCurr: getCurr, | ||
getRest: getRest, | ||
/** | ||
* Grabs rest of string until it find a char | ||
* @param {String} char | ||
* @return {String} | ||
*/ | ||
substrUntilChar: function substrUntilChar(char$$1) { | ||
@@ -432,4 +444,13 @@ var restStr = getRest(); | ||
/** | ||
* Trims string from start and end by char | ||
* @example | ||
* trimChar('*hello*', '*') ==> 'hello' | ||
* @param {String} str | ||
* @param {String} charToRemove | ||
* @returns {String} | ||
*/ | ||
var trimChar = function trimChar(str, charToRemove) { | ||
while (str.charAt(0) === charToRemove) { | ||
// eslint-disable-next-line no-param-reassign | ||
str = str.substring(1); | ||
@@ -439,2 +460,3 @@ } | ||
while (str.charAt(str.length - 1) === charToRemove) { | ||
// eslint-disable-next-line no-param-reassign | ||
str = str.substring(0, str.length - 1); | ||
@@ -446,5 +468,81 @@ } | ||
/** | ||
* Unquotes \" to " | ||
* @param str | ||
* @return {String} | ||
*/ | ||
var unquote = function unquote(str) { | ||
return str.replace(char_14 + char_7, char_7); | ||
}; | ||
/** | ||
* @typedef {Object} ItemList | ||
* @type {Object} | ||
* @property {getLastCb} getLast | ||
* @property {flushLastCb} flushLast | ||
* @property {pushCb} push | ||
* @property {toArrayCb} toArray | ||
*/ | ||
/** | ||
* | ||
* @param values | ||
* @return {ItemList} | ||
*/ | ||
var createList = function createList() { | ||
var values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; | ||
var nodes = values; | ||
/** | ||
* @callback getLastCb | ||
*/ | ||
var getLast = function getLast() { | ||
return nodes.length ? nodes[nodes.length - 1] : null; | ||
}; | ||
/** | ||
* @callback flushLastCb | ||
* @return {*} | ||
*/ | ||
var flushLast = function flushLast() { | ||
if (nodes.length) { | ||
return nodes.pop(); | ||
} | ||
return false; | ||
}; | ||
/** | ||
* @callback pushCb | ||
* @param value | ||
*/ | ||
var push = function push(value) { | ||
return nodes.push(value); | ||
}; | ||
/** | ||
* @callback toArrayCb | ||
* @return {Array} | ||
*/ | ||
return { | ||
getLast: getLast, | ||
flushLast: flushLast, | ||
push: push, | ||
toArray: function toArray() { | ||
return nodes; | ||
} | ||
}; | ||
}; | ||
/* eslint-disable no-plusplus,no-param-reassign */ | ||
// for cases <!-- --> | ||
var EM = '!'; | ||
/** | ||
* Creates a Token entity class | ||
* @param {String} type | ||
* @param {String} value | ||
* @param {Number} r line number | ||
* @param {Number} cl char number in line | ||
*/ | ||
var createToken = function createToken(type, value) { | ||
@@ -499,2 +597,6 @@ var r = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; | ||
/** | ||
* Emits newly created token to subscriber | ||
* @param token | ||
*/ | ||
var emitToken = function emitToken(token) { | ||
@@ -509,2 +611,7 @@ if (options.onToken) { | ||
/** | ||
* Parses params inside [myTag---params goes here---]content[/myTag] | ||
* @param str | ||
* @returns {{tag: *, attrs: Array}} | ||
*/ | ||
var parseAttrs = function parseAttrs(str) { | ||
@@ -548,3 +655,3 @@ var tagName = null; | ||
// first string before space is a tag name | ||
// first string before space is a tag name [tagName params...] | ||
if (tagName === null) { | ||
@@ -576,5 +683,5 @@ tagName = attrStr; | ||
var next = function next() { | ||
var char$$1 = bufferGrabber.getCurr(); | ||
var currChar = bufferGrabber.getCurr(); | ||
if (char$$1 === char_2) { | ||
if (currChar === char_2) { | ||
bufferGrabber.skip(); | ||
@@ -584,7 +691,7 @@ col = 0; | ||
emitToken(createToken(TYPE_NEW_LINE, char$$1, row, col)); | ||
} else if (isWhiteSpace(char$$1)) { | ||
emitToken(createToken(TYPE_NEW_LINE, currChar, row, col)); | ||
} else if (isWhiteSpace(currChar)) { | ||
var str = bufferGrabber.grabWhile(isWhiteSpace); | ||
emitToken(createToken(TYPE_SPACE, str, row, col)); | ||
} else if (char$$1 === openTag) { | ||
} else if (currChar === openTag) { | ||
var nextChar = bufferGrabber.getNext(); | ||
@@ -598,3 +705,3 @@ bufferGrabber.skip(); // skip openTag | ||
if (isCharReserved(nextChar) || hasInvalidChars || bufferGrabber.isLast()) { | ||
emitToken(createToken(TYPE_WORD, char$$1, row, col)); | ||
emitToken(createToken(TYPE_WORD, currChar, row, col)); | ||
} else { | ||
@@ -606,3 +713,5 @@ var _str = bufferGrabber.grabWhile(function (val) { | ||
bufferGrabber.skip(); // skip closeTag | ||
// [myTag ] | ||
var isNoAttrsInTag = _str.indexOf(char_6) === -1; | ||
// [/myTag] | ||
var isClosingTag = _str[0] === char_11; | ||
@@ -616,10 +725,11 @@ | ||
emitToken(createToken(TYPE_TAG, parsed.tag, row, col)); | ||
parsed.attrs.map(emitToken); | ||
} | ||
} | ||
} else if (char$$1 === closeTag) { | ||
bufferGrabber.skip(); | ||
} else if (currChar === closeTag) { | ||
bufferGrabber.skip(); // skip closeTag | ||
emitToken(createToken(TYPE_WORD, char$$1, row, col)); | ||
} else if (isCharToken(char$$1)) { | ||
emitToken(createToken(TYPE_WORD, currChar, row, col)); | ||
} else if (isCharToken(currChar)) { | ||
var _str2 = bufferGrabber.grabWhile(isCharToken); | ||
@@ -643,2 +753,3 @@ | ||
var value = openTag + char_11 + token.getValue(); | ||
// potential bottleneck | ||
return buffer.indexOf(value) > -1; | ||
@@ -654,155 +765,133 @@ }; | ||
/** | ||
* @private | ||
* @type {Array} | ||
* @public | ||
* @param {String} input | ||
* @param {Object} opts | ||
* @param {Function} opts.createTokenizer | ||
* @param {Array<string>} opts.onlyAllowTags | ||
* @param {String} opts.openTag | ||
* @param {String} opts.closeTag | ||
* @return {Array} | ||
*/ | ||
var nodes = void 0; | ||
/** | ||
* @private | ||
* @type {Array} | ||
*/ | ||
var nestedNodes = void 0; | ||
/** | ||
* @private | ||
* @type {Array} | ||
*/ | ||
var tagNodes = void 0; | ||
/** | ||
* @private | ||
* @type {Array} | ||
*/ | ||
var tagNodesAttrName = void 0; | ||
var parse = function parse(input) { | ||
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
var options = {}; | ||
var tokenizer = null; | ||
var options = opts; | ||
// eslint-disable-next-line no-unused-vars | ||
var tokens = null; | ||
var tokenizer = null; | ||
/** | ||
* @private | ||
* @param token | ||
* @return {*} | ||
*/ | ||
var isTagNested = function isTagNested(token) { | ||
return tokenizer.isTokenNested(token); | ||
}; | ||
/** | ||
* Result AST of nodes | ||
* @private | ||
* @type {ItemList} | ||
*/ | ||
var nodes = createList(); | ||
/** | ||
* Temp buffer of nodes that's nested to another node | ||
* @private | ||
* @type {ItemList} | ||
*/ | ||
var nestedNodes = createList(); | ||
/** | ||
* Temp buffer of nodes [tag..]...[/tag] | ||
* @private | ||
* @type {ItemList} | ||
*/ | ||
var tagNodes = createList(); | ||
/** | ||
* Temp buffer of tag attributes | ||
* @private | ||
* @type {ItemList} | ||
*/ | ||
var tagNodesAttrName = createList(); | ||
/** | ||
* @private | ||
* @return {TagNode} | ||
*/ | ||
var getLastTagNode = function getLastTagNode() { | ||
return tagNodes.length ? tagNodes[tagNodes.length - 1] : null; | ||
}; | ||
/** | ||
* Cache for nested tags checks | ||
* @type {{}} | ||
*/ | ||
var nestedTagsMap = {}; | ||
/** | ||
* @private | ||
* @param {Token} token | ||
* @return {Array} | ||
*/ | ||
var createTagNode = function createTagNode(token) { | ||
return tagNodes.push(TagNode.create(token.getValue())); | ||
}; | ||
/** | ||
* @private | ||
* @param {Token} token | ||
* @return {Array} | ||
*/ | ||
var createTagNodeAttrName = function createTagNodeAttrName(token) { | ||
return tagNodesAttrName.push(token.getValue()); | ||
}; | ||
var isTokenNested = function isTokenNested(token) { | ||
if (typeof nestedTagsMap[token.getValue()] === 'undefined') { | ||
nestedTagsMap[token.getValue()] = tokenizer.isTokenNested(token); | ||
} | ||
/** | ||
* @private | ||
* @return {Array} | ||
*/ | ||
var getTagNodeAttrName = function getTagNodeAttrName() { | ||
return tagNodesAttrName.length ? tagNodesAttrName[tagNodesAttrName.length - 1] : null; | ||
}; | ||
return nestedTagsMap[token.getValue()]; | ||
}; | ||
/** | ||
* @private | ||
* @return {Array} | ||
*/ | ||
var clearTagNodeAttrName = function clearTagNodeAttrName() { | ||
if (tagNodesAttrName.length) { | ||
tagNodesAttrName.pop(); | ||
} | ||
}; | ||
var isTagNested = function isTagNested(tagName) { | ||
return !!nestedTagsMap[tagName]; | ||
}; | ||
/** | ||
* @private | ||
* @return {Array} | ||
*/ | ||
var clearTagNode = function clearTagNode() { | ||
if (tagNodes.length) { | ||
tagNodes.pop(); | ||
/** | ||
* Flushes temp tag nodes and its attributes buffers | ||
* @private | ||
* @return {Array} | ||
*/ | ||
var flushTagNodes = function flushTagNodes() { | ||
if (tagNodes.flushLast()) { | ||
tagNodesAttrName.flushLast(); | ||
} | ||
}; | ||
clearTagNodeAttrName(); | ||
} | ||
}; | ||
/** | ||
* @private | ||
* @return {Array} | ||
*/ | ||
var getNodes = function getNodes() { | ||
var lastNestedNode = nestedNodes.getLast(); | ||
/** | ||
* @private | ||
* @return {Array} | ||
*/ | ||
var getNodes = function getNodes() { | ||
if (nestedNodes.length) { | ||
var nestedNode = nestedNodes[nestedNodes.length - 1]; | ||
return lastNestedNode ? lastNestedNode.content : nodes.toArray(); | ||
}; | ||
return nestedNode.content; | ||
} | ||
/** | ||
* @private | ||
* @param {TagNode} tag | ||
*/ | ||
var appendNodes = function appendNodes(tag) { | ||
getNodes().push(tag); | ||
}; | ||
return nodes; | ||
}; | ||
/** | ||
* @private | ||
* @param {String} value | ||
* @return {boolean} | ||
*/ | ||
var isAllowedTag = function isAllowedTag(value) { | ||
if (options.onlyAllowTags && options.onlyAllowTags.length) { | ||
return options.onlyAllowTags.indexOf(value) >= 0; | ||
} | ||
/** | ||
* @private | ||
* @param tag | ||
*/ | ||
var appendNode = function appendNode(tag) { | ||
getNodes().push(tag); | ||
}; | ||
return true; | ||
}; | ||
/** | ||
* @private | ||
* @param value | ||
* @return {boolean} | ||
*/ | ||
var isAllowedTag = function isAllowedTag(value) { | ||
if (options.onlyAllowTags && options.onlyAllowTags.length) { | ||
return options.onlyAllowTags.indexOf(value) >= 0; | ||
} | ||
/** | ||
* @private | ||
* @param {Token} token | ||
*/ | ||
var handleTagStart = function handleTagStart(token) { | ||
flushTagNodes(); | ||
return true; | ||
}; | ||
/** | ||
* @private | ||
* @param {Token} token | ||
*/ | ||
var handleTagStart = function handleTagStart(token) { | ||
if (token.isStart()) { | ||
createTagNode(token); | ||
var tagNode = TagNode.create(token.getValue()); | ||
var isNested = isTokenNested(token); | ||
if (isTagNested(token)) { | ||
nestedNodes.push(getLastTagNode()); | ||
tagNodes.push(tagNode); | ||
if (isNested) { | ||
nestedNodes.push(tagNode); | ||
} else { | ||
appendNode(getLastTagNode()); | ||
clearTagNode(); | ||
appendNodes(tagNode); | ||
} | ||
} | ||
}; | ||
}; | ||
/** | ||
* @private | ||
* @param {Token} token | ||
*/ | ||
var handleTagEnd = function handleTagEnd(token) { | ||
if (token.isEnd()) { | ||
clearTagNode(); | ||
/** | ||
* @private | ||
* @param {Token} token | ||
*/ | ||
var handleTagEnd = function handleTagEnd(token) { | ||
flushTagNodes(); | ||
var lastNestedNode = nestedNodes.pop(); | ||
var lastNestedNode = nestedNodes.flushLast(); | ||
if (lastNestedNode) { | ||
appendNode(lastNestedNode); | ||
appendNodes(lastNestedNode); | ||
} else if (options.onError) { | ||
@@ -815,2 +904,3 @@ var tag = token.getValue(); | ||
message: 'Inconsistent tag \'' + tag + '\' on line ' + line + ' and column ' + column, | ||
tagName: tag, | ||
lineNumber: line, | ||
@@ -820,71 +910,77 @@ columnNumber: column | ||
} | ||
} | ||
}; | ||
}; | ||
/** | ||
* @private | ||
* @param {Token} token | ||
*/ | ||
var handleTagToken = function handleTagToken(token) { | ||
if (token.isTag()) { | ||
if (isAllowedTag(token.getName())) { | ||
// [tag] | ||
/** | ||
* @private | ||
* @param {Token} token | ||
*/ | ||
var handleTag = function handleTag(token) { | ||
// [tag] | ||
if (token.isStart()) { | ||
handleTagStart(token); | ||
} | ||
// [/tag] | ||
// [/tag] | ||
if (token.isEnd()) { | ||
handleTagEnd(token); | ||
} else { | ||
appendNode(token.toString()); | ||
} | ||
} | ||
}; | ||
}; | ||
/** | ||
* @private | ||
* @param {Token} token | ||
*/ | ||
var handleTagNode = function handleTagNode(token) { | ||
var tagNode = getLastTagNode(); | ||
/** | ||
* @private | ||
* @param {Token} token | ||
*/ | ||
var handleNode = function handleNode(token) { | ||
/** | ||
* @type {TagNode} | ||
*/ | ||
var lastTagNode = tagNodes.getLast(); | ||
var tokenValue = token.getValue(); | ||
var isNested = isTagNested(token); | ||
if (tagNode) { | ||
if (token.isAttrName()) { | ||
createTagNodeAttrName(token); | ||
tagNode.attr(getTagNodeAttrName(), ''); | ||
} else if (token.isAttrValue()) { | ||
var attrName = getTagNodeAttrName(); | ||
var attrValue = token.getValue(); | ||
if (lastTagNode) { | ||
if (token.isAttrName()) { | ||
tagNodesAttrName.push(tokenValue); | ||
lastTagNode.attr(tagNodesAttrName.getLast(), ''); | ||
} else if (token.isAttrValue()) { | ||
var attrName = tagNodesAttrName.getLast(); | ||
if (attrName) { | ||
tagNode.attr(getTagNodeAttrName(), attrValue); | ||
clearTagNodeAttrName(); | ||
} else { | ||
tagNode.attr(attrValue, attrValue); | ||
if (attrName) { | ||
lastTagNode.attr(attrName, tokenValue); | ||
tagNodesAttrName.flushLast(); | ||
} else { | ||
lastTagNode.attr(tokenValue, tokenValue); | ||
} | ||
} else if (token.isText()) { | ||
if (isNested) { | ||
lastTagNode.append(tokenValue); | ||
} else { | ||
appendNodes(tokenValue); | ||
} | ||
} else if (token.isTag()) { | ||
// if tag is not allowed, just past it as is | ||
appendNodes(token.toString()); | ||
} | ||
} else if (token.isText()) { | ||
tagNode.append(token.getValue()); | ||
appendNodes(tokenValue); | ||
} else if (token.isTag()) { | ||
// if tag is not allowed, just past it as is | ||
appendNodes(token.toString()); | ||
} | ||
} else if (token.isText()) { | ||
appendNode(token.getValue()); | ||
} | ||
}; | ||
}; | ||
/** | ||
* @private | ||
* @param token | ||
*/ | ||
var parseToken = function parseToken(token) { | ||
handleTagToken(token); | ||
handleTagNode(token); | ||
}; | ||
/** | ||
* @private | ||
* @param {Token} token | ||
*/ | ||
var onToken = function onToken(token) { | ||
if (token.isTag() && isAllowedTag(token.getName())) { | ||
handleTag(token); | ||
} else { | ||
handleNode(token); | ||
} | ||
}; | ||
/** | ||
* @public | ||
* @return {Array} | ||
*/ | ||
var parse = function parse(input) { | ||
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
options = opts; | ||
tokenizer = (opts.createTokenizer ? opts.createTokenizer : createLexer)(input, { | ||
onToken: parseToken, | ||
onToken: onToken, | ||
onlyAllowTags: options.onlyAllowTags, | ||
@@ -895,10 +991,6 @@ openTag: options.openTag, | ||
nodes = []; | ||
nestedNodes = []; | ||
tagNodes = []; | ||
tagNodesAttrName = []; | ||
// eslint-disable-next-line no-unused-vars | ||
var tokens = tokenizer.tokenize(); | ||
tokens = tokenizer.tokenize(); | ||
return nodes; | ||
return nodes.toArray(); | ||
}; | ||
@@ -905,0 +997,0 @@ |
@@ -1,1 +0,1 @@ | ||
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n(t.BbobHtml={})}(this,function(t){"use strict";function n(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function e(t,n){return t(n={exports:{}},n.exports),n.exports}var u=e(function(t,n){n.__esModule=!0;n.N="\n",n.F="\f",n.R="\r",n.TAB="\t",n.EQ="=",n.QUOTEMARK='"',n.SPACE=" ",n.OPEN_BRAKET="[",n.CLOSE_BRAKET="]",n.SLASH="/",n.PLACEHOLDER_SPACE_TAB=" ",n.PLACEHOLDER_SPACE=" ",n.BACKSLASH="\\"});n(u);var A=u.N,a=u.TAB,b=u.EQ,E=u.QUOTEMARK,N=u.SPACE,m=u.OPEN_BRAKET,O=u.CLOSE_BRAKET,S=u.SLASH,x=u.BACKSLASH,o=e(function(t,n){n.__esModule=!0,n.isEOL=n.isStringNode=n.isTagNode=n.getNodeLength=n.appendToNode=n.attrValue=void 0;var r=function(t){return"object"==typeof t&&!!t.tag},o=function(t){return"string"==typeof t},i=function(t){return t.replace(/"/g,""")};n.attrValue=function(t,n){var e=typeof n,r={boolean:function(){return n?""+t:""},number:function(){return t+'="'+n+'"'},string:function(){return t+'="'+i(n)+'"'},object:function(){return t+'="'+i(JSON.stringify(n))+'"'}};return r[e]?r[e]():""},n.appendToNode=function(t,n){t.content.push(n)},n.getNodeLength=function e(t){return r(t)?t.content.reduce(function(t,n){return t+e(n)},0):o(t)?t.length:0},n.isTagNode=r,n.isStringNode=o,n.isEOL=function(t){return t===u.N}});n(o);var r=e(function(t,n){n.__esModule=!0,n.TagNode=void 0;var e=function(){function r(t,n){for(var e=0;e<n.length;e++){var r=n[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(t,n,e){return n&&r(t.prototype,n),e&&r(t,e),t}}();var r=function(){function r(t,n,e){!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,r),this.tag=t,this.attrs=n,this.content=[].concat(e)}return r.prototype.attr=function(t,n){return void 0!==n&&(this.attrs[t]=n),this.attrs[t]},r.prototype.append=function(t){return(0,o.appendToNode)(this,t)},r.prototype.toString=function(){var t=u.OPEN_BRAKET,n=u.CLOSE_BRAKET;return t+this.tag+n+this.content.reduce(function(t,n){return t+""+n},"")+t+u.SLASH+this.tag+n},e(r,[{key:"length",get:function(){return(0,o.getNodeLength)(this)}}]),r}();r.create=function(t){return new r(t,1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},2<arguments.length&&void 0!==arguments[2]?arguments[2]:[])},r.isOf=function(t,n){return t.tag===n},n.TagNode=r,n.default=r}),i=n(r);var s="type",f="value",c="line",l="word",p="attr-name",g="attr-value",h="space",d="new-line",v=function(t){return t[f]},y=function(t){return v(t).charCodeAt(0)==S.charCodeAt(0)},T=function(){function o(t,n,e,r){!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,o),this[s]=t+"",this[f]=n+"",this[c]=+e,this.row=+r}return o.prototype.isEmpty=function(){return!!this[s]},o.prototype.isText=function(){return(t=this)[s]===h||t[s]===d||t[s]===l;var t},o.prototype.isTag=function(){return"tag"===this[s]},o.prototype.isAttrName=function(){return this[s]===p},o.prototype.isAttrValue=function(){return this[s]===g},o.prototype.isStart=function(){return!y(this)},o.prototype.isEnd=function(){return y(this)},o.prototype.getName=function(){return n=v(t=this),y(t)?n.slice(1):n;var t,n},o.prototype.getValue=function(){return v(this)},o.prototype.getLine=function(){return this[c]},o.prototype.getColumn=function(){return this.row},o.prototype.toString=function(){return n=m,y(t=this)&&(n+=S),n+=v(t),n+=O;var t,n},o}(),k=l,w=function(e){var t=(1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}).onSkip,r=0,o=function(){r+=1,t&&t()},i=function(){return r<e.length},u=function(){return e.substr(r)};return{skip:o,hasNext:i,isLast:function(){return r===e.length},grabWhile:function(t){for(var n=r;i()&&t(e[r]);)o();return e.substr(n,r-n)},getNext:function(){return e[r+1]},getPrev:function(){return e[r-1]},getCurr:function(){return e[r]},getRest:u,substrUntilChar:function(t){var n=u(),e=n.indexOf(t);return e<0?"":n.substr(0,e)}}},C=function(t,n){return new T(t,n,2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,3<arguments.length&&void 0!==arguments[3]?arguments[3]:0)};function L(e){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},f=0,c=0,r=-1,o=Array(Math.floor(e.length)),s=n.openTag||m,l=n.closeTag||O,p=[l,s,E,x,N,a,b,A,"!"],i=[s,N,a,A],u=[N,a],g=[b,N,a],h=function(t){return 0<=u.indexOf(t)},d=function(t){return-1==i.indexOf(t)},v=function(t){n.onToken&&n.onToken(t),o[r+=1]=t},y=function(t){for(var u=null,a=!1,r=[],s=w(t),o=function(t){var n=t===b,e=h(t),r=s.getPrev(),o=s.getNext(),i=r===x;return null===u?!1===(n||e||s.isLast()):!(!a||g.indexOf(t)<0)||!!(t!==E||i||(a=!a)||o===b||h(o))&&!1===(n||e)},n=function(){var t=s.grabWhile(o),n=s.getCurr();if(null===u)u=t;else if(h(n)||n===E||!s.hasNext()){var e=function(t,n){for(;t.charAt(0)===n;)t=t.substring(1);for(;t.charAt(t.length-1)===n;)t=t.substring(0,t.length-1);return t}(t,E).replace(x+E,E);r.push(C("attr-value",e,f,c))}else r.push(C("attr-name",t,f,c));s.skip()};s.hasNext();)n();return{tag:u,attrs:r}},T=w(e,{onSkip:function(){c++}}),t=function(){var t=T.getCurr();if(t===A)T.skip(),v(C("new-line",t,++f,c=0));else if(h(t)){var n=T.grabWhile(h);v(C("space",n,f,c))}else if(t===s){var e=T.getNext();T.skip();var r=T.substrUntilChar(l),o=0===r.length||0<=r.indexOf(s);if(0<=p.indexOf(e)||o||T.isLast())v(C(k,t,f,c));else{var i=T.grabWhile(function(t){return t!==l});if(T.skip(),-1==i.indexOf(b)||i[0]===S)v(C("tag",i,f,c));else{var u=y(i);v(C("tag",u.tag,f,c)),u.attrs.map(v)}}}else if(t===l)T.skip(),v(C(k,t,f,c));else if(d(t)){var a=T.grabWhile(d);v(C(k,a,f,c))}};return{tokenize:function(){for(;T.hasNext();)t();return o.length=r+1,o},isTokenNested:function(t){var n=s+S+t.getValue();return-1<e.indexOf(n)}}}var _=void 0,P=void 0,j=void 0,B=void 0,R={},V=null,K=function(){return j.length?j[j.length-1]:null},H=function(){return B.length?B[B.length-1]:null},M=function(){B.length&&B.pop()},W=function(){j.length&&(j.pop(),M())},z=function(t){(P.length?P[P.length-1].content:_).push(t)},Q=function(t){t.isStart()&&(j.push(i.create(t.getValue())),V.isTokenNested(t)?P.push(K()):(z(K()),W()))},U=function(t){var n;t.isTag()&&(n=t.getName(),R.onlyAllowTags&&R.onlyAllowTags.length&&R.onlyAllowTags.indexOf(n)<0?z(""+t):(Q(t),function(t){if(t.isEnd()){W();var n=P.pop();if(n)z(n);else if(R.onError){var e=t.getValue(),r=t.getLine(),o=t.getColumn();R.onError({message:"Inconsistent tag '"+e+"' on line "+r+" and column "+o,lineNumber:r,columnNumber:o})}}}(t)))},q=function(t){var n=K();if(n)if(t.isAttrName())B.push(t.getValue()),n.attr(H(),"");else if(t.isAttrValue()){var e=H(),r=t.getValue();e?(n.attr(H(),r),M()):n.attr(r,r)}else t.isText()&&n.append(t.getValue());else t.isText()&&z(t.getValue())},D=function(t){U(t),q(t)},J=function(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return V=((R=n).createTokenizer?n.createTokenizer:L)(t,{onToken:D,onlyAllowTags:R.onlyAllowTags,openTag:R.openTag,closeTag:R.closeTag}),_=[],P=[],j=[],B=[],V.tokenize(),_},F=function(t){return"object"==typeof t},I=function(t){return"boolean"==typeof t};function G(t,n){var e=t;if(Array.isArray(e))for(var r=0;r<e.length;r++)e[r]=G(n(e[r]),n);else e&&F(e)&&e.content&&G(e.content,n);return e}function X(r,o){return typeof r==typeof o&&(F(r)&&null!==r?Array.isArray(r)?r.every(function(n){return[].some.call(o,function(t){return X(n,t)})}):Object.keys(r).every(function(t){var n=o[t],e=r[t];return F(e)&&null!==e&&null!==n?X(e,n):I(e)?e!==(null===n):n===e}):r===o)}function Y(e,r){return G(this,Array.isArray(e)?function(t){for(var n=0;n<e.length;n++)if(X(e[n],t))return r(t);return t}:function(t){return X(e,t)?r(t):t})}function Z(t){return G(this,t)}var $=function(t){return t.replace(/"/g,""")},tt=function(u){return Object.keys(u).reduce(function(t,n){return[].concat(t,[(e=n,r=u[n],o=typeof r,i={boolean:function(){return r?""+e:""},number:function(){return e+'="'+r+'"'},string:function(){return e+'="'+$(r)+'"'},object:function(){return e+'="'+$(JSON.stringify(r))+'"'}},i[o]?i[o]():"")]);var e,r,o,i},[""]).join(" ")},nt="/>",et="</",rt="<",ot=">",it=function(t){var n=(1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}).stripTags,e=void 0!==n&&n;return[].concat(t).reduce(function(t,n){return t+function(t,n){var e=n.stripTags,r=void 0!==e&&e;if(!t)return"";var o=typeof t;return"string"===o||"number"===o?t:"object"===o?!0===r?it(t.content,{stripTags:r}):null===t.content?""+rt+t.tag+tt(t.attrs)+nt:""+rt+t.tag+tt(t.attrs)+ot+it(t.content)+et+t.tag+ot:Array.isArray(t)?it(t,{stripTags:r}):""}(n,{stripTags:e})},"")};t.render=it,t.default=function(t,n){return(e=n,u="function"==typeof e?[e]:e||[],a={skipParse:!1},{process:function(t,n){var e=(a=n||{}).parser||J,r=a.render;if("function"!=typeof e)throw Error('"parser" is not a function, please pass to "process(input, { parser })" right function');var o=a.skipParse?t||[]:e(t,a),i=o;return o.walk=Z,o.match=Y,u.forEach(function(t){o=t(o,{parse:e,render:r,iterate:G,match:Y})||o}),{get html(){if("function"!=typeof r)throw Error('"render" function not defined, please pass to "process(input, { render })"');return r(o,o.options)},tree:o,raw:i,messages:o.messages}}}).process(t,{render:it}).html;var e,u,a},Object.defineProperty(t,"__esModule",{value:!0})}); | ||
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n(t.BbobHtml={})}(this,function(t){"use strict";function n(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function e(t,n){return t(n={exports:{}},n.exports),n.exports}var u=e(function(t,n){n.__esModule=!0;n.N="\n",n.F="\f",n.R="\r",n.TAB="\t",n.EQ="=",n.QUOTEMARK='"',n.SPACE=" ",n.OPEN_BRAKET="[",n.CLOSE_BRAKET="]",n.SLASH="/",n.PLACEHOLDER_SPACE_TAB=" ",n.PLACEHOLDER_SPACE=" ",n.BACKSLASH="\\"});n(u);var A=u.N,a=u.TAB,b=u.EQ,E=u.QUOTEMARK,N=u.SPACE,L=u.OPEN_BRAKET,m=u.CLOSE_BRAKET,O=u.SLASH,S=u.BACKSLASH,o=e(function(t,n){n.__esModule=!0,n.isEOL=n.isStringNode=n.isTagNode=n.getNodeLength=n.appendToNode=n.attrValue=void 0;var r=function(t){return"object"==typeof t&&!!t.tag},o=function(t){return"string"==typeof t},i=function(t){return t.replace(/"/g,""")};n.attrValue=function(t,n){var e=typeof n,r={boolean:function(){return n?""+t:""},number:function(){return t+'="'+n+'"'},string:function(){return t+'="'+i(n)+'"'},object:function(){return t+'="'+i(JSON.stringify(n))+'"'}};return r[e]?r[e]():""},n.appendToNode=function(t,n){t.content.push(n)},n.getNodeLength=function e(t){return r(t)?t.content.reduce(function(t,n){return t+e(n)},0):o(t)?t.length:0},n.isTagNode=r,n.isStringNode=o,n.isEOL=function(t){return t===u.N}});n(o);var r=e(function(t,n){n.__esModule=!0,n.TagNode=void 0;var e=function(){function r(t,n){for(var e=0;e<n.length;e++){var r=n[e];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(t,n,e){return n&&r(t.prototype,n),e&&r(t,e),t}}();var r=function(){function r(t,n,e){!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,r),this.tag=t,this.attrs=n,this.content=[].concat(e)}return r.prototype.attr=function(t,n){return void 0!==n&&(this.attrs[t]=n),this.attrs[t]},r.prototype.append=function(t){return(0,o.appendToNode)(this,t)},r.prototype.toString=function(){var t=u.OPEN_BRAKET,n=u.CLOSE_BRAKET;return t+this.tag+n+this.content.reduce(function(t,n){return t+""+n},"")+t+u.SLASH+this.tag+n},e(r,[{key:"length",get:function(){return(0,o.getNodeLength)(this)}}]),r}();r.create=function(t){return new r(t,1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},2<arguments.length&&void 0!==arguments[2]?arguments[2]:[])},r.isOf=function(t,n){return t.tag===n},n.TagNode=r,n.default=r}),h=n(r);var i="type",s="value",f="line",c="word",l="attr-name",g="attr-value",p="space",d="new-line",v=function(t){return t[s]},y=function(t){return v(t).charCodeAt(0)==O.charCodeAt(0)},T=function(){function o(t,n,e,r){!function(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}(this,o),this[i]=t+"",this[s]=n+"",this[f]=+e,this.row=+r}return o.prototype.isEmpty=function(){return!!this[i]},o.prototype.isText=function(){return(t=this)[i]===p||t[i]===d||t[i]===c;var t},o.prototype.isTag=function(){return"tag"===this[i]},o.prototype.isAttrName=function(){return this[i]===l},o.prototype.isAttrValue=function(){return this[i]===g},o.prototype.isStart=function(){return!y(this)},o.prototype.isEnd=function(){return y(this)},o.prototype.getName=function(){return n=v(t=this),y(t)?n.slice(1):n;var t,n},o.prototype.getValue=function(){return v(this)},o.prototype.getLine=function(){return this[f]},o.prototype.getColumn=function(){return this.row},o.prototype.toString=function(){return t=L,t+=v(this),t+=m;var t},o}(),x=c,k=function(e){var t=(1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}).onSkip,r=0,o=function(){r+=1,t&&t()},i=function(){return r<e.length},u=function(){return e.substr(r)},a=function(){return e[r]};return{skip:o,hasNext:i,isLast:function(){return r===e.length},grabWhile:function(t){for(var n=r;i()&&t(a());)o();return e.substr(n,r-n)},getNext:function(){return e[r+1]},getPrev:function(){return e[r-1]},getCurr:a,getRest:u,substrUntilChar:function(t){var n=u(),e=n.indexOf(t);return e<0?"":n.substr(0,e)}}},w=function(){var n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[];return{getLast:function(){return n.length?n[n.length-1]:null},flushLast:function(){return!!n.length&&n.pop()},push:function(t){return n.push(t)},toArray:function(){return n}}},C=function(t,n){return new T(t,n,2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,3<arguments.length&&void 0!==arguments[3]?arguments[3]:0)};function _(e){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},f=0,c=0,r=-1,o=Array(Math.floor(e.length)),s=n.openTag||L,l=n.closeTag||m,g=[l,s,E,S,N,a,b,A,"!"],i=[s,N,a,A],u=[N,a],p=[b,N,a],h=function(t){return 0<=u.indexOf(t)},d=function(t){return-1==i.indexOf(t)},v=function(t){n.onToken&&n.onToken(t),o[r+=1]=t},y=function(t){for(var u=null,a=!1,r=[],s=k(t),o=function(t){var n=t===b,e=h(t),r=s.getPrev(),o=s.getNext(),i=r===S;return null===u?!1===(n||e||s.isLast()):!(!a||p.indexOf(t)<0)||!!(t!==E||i||(a=!a)||o===b||h(o))&&!1===(n||e)},n=function(){var t=s.grabWhile(o),n=s.getCurr();if(null===u)u=t;else if(h(n)||n===E||!s.hasNext()){var e=function(t,n){for(;t.charAt(0)===n;)t=t.substring(1);for(;t.charAt(t.length-1)===n;)t=t.substring(0,t.length-1);return t}(t,E).replace(S+E,E);r.push(C("attr-value",e,f,c))}else r.push(C("attr-name",t,f,c));s.skip()};s.hasNext();)n();return{tag:u,attrs:r}},T=k(e,{onSkip:function(){c++}}),t=function(){var t=T.getCurr();if(t===A)T.skip(),v(C("new-line",t,++f,c=0));else if(h(t)){var n=T.grabWhile(h);v(C("space",n,f,c))}else if(t===s){var e=T.getNext();T.skip();var r=T.substrUntilChar(l),o=0===r.length||0<=r.indexOf(s);if(0<=g.indexOf(e)||o||T.isLast())v(C(x,t,f,c));else{var i=T.grabWhile(function(t){return t!==l});if(T.skip(),-1==i.indexOf(b)||i[0]===O)v(C("tag",i,f,c));else{var u=y(i);v(C("tag",u.tag,f,c)),u.attrs.map(v)}}}else if(t===l)T.skip(),v(C(x,t,f,c));else if(d(t)){var a=T.grabWhile(d);v(C(x,a,f,c))}};return{tokenize:function(){for(;T.hasNext();)t();return o.length=r+1,o},isTokenNested:function(t){var n=s+O+t.getValue();return-1<e.indexOf(n)}}}var P=function(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=n,o=null,e=w(),u=w(),a=w(),s=w(),f={},c=function(){a.flushLast()&&s.flushLast()},l=function(t){var n;(n=u.getLast(),n?n.content:e.toArray()).push(t)},r=function(t){c();var n,e=h.create(t.getValue()),r=(void 0===f[(n=t).getValue()]&&(f[n.getValue()]=o.isTokenNested(n)),f[n.getValue()]);a.push(e),r?u.push(e):l(e)},g=function(t){t.isStart()&&r(t),t.isEnd()&&function(t){c();var n=u.flushLast();if(n)l(n);else if(i.onError){var e=t.getValue(),r=t.getLine(),o=t.getColumn();i.onError({message:"Inconsistent tag '"+e+"' on line "+r+" and column "+o,tagName:e,lineNumber:r,columnNumber:o})}}(t)},p=function(t){var n=a.getLast(),e=t.getValue(),r=!!f[t];if(n)if(t.isAttrName())s.push(e),n.attr(s.getLast(),"");else if(t.isAttrValue()){var o=s.getLast();o?(n.attr(o,e),s.flushLast()):n.attr(e,e)}else t.isText()?r?n.append(e):l(e):t.isTag()&&l(""+t);else t.isText()?l(e):t.isTag()&&l(""+t)};(o=(n.createTokenizer?n.createTokenizer:_)(t,{onToken:function(t){var n;!t.isTag()||(n=t.getName(),i.onlyAllowTags&&i.onlyAllowTags.length&&i.onlyAllowTags.indexOf(n)<0)?p(t):g(t)},onlyAllowTags:i.onlyAllowTags,openTag:i.openTag,closeTag:i.closeTag})).tokenize();return e.toArray()},j=function(t){return"object"==typeof t},B=function(t){return"boolean"==typeof t};function R(t,n){var e=t;if(Array.isArray(e))for(var r=0;r<e.length;r++)e[r]=R(n(e[r]),n);else e&&j(e)&&e.content&&R(e.content,n);return e}function V(r,o){return typeof r==typeof o&&(j(r)&&null!==r?Array.isArray(r)?r.every(function(n){return[].some.call(o,function(t){return V(n,t)})}):Object.keys(r).every(function(t){var n=o[t],e=r[t];return j(e)&&null!==e&&null!==n?V(e,n):B(e)?e!==(null===n):n===e}):r===o)}function K(e,r){return R(this,Array.isArray(e)?function(t){for(var n=0;n<e.length;n++)if(V(e[n],t))return r(t);return t}:function(t){return V(e,t)?r(t):t})}function H(t){return R(this,t)}var M=function(t){return t.replace(/"/g,""")},W=function(u){return Object.keys(u).reduce(function(t,n){return[].concat(t,[(e=n,r=u[n],o=typeof r,i={boolean:function(){return r?""+e:""},number:function(){return e+'="'+r+'"'},string:function(){return e+'="'+M(r)+'"'},object:function(){return e+'="'+M(JSON.stringify(r))+'"'}},i[o]?i[o]():"")]);var e,r,o,i},[""]).join(" ")},z="/>",Q="</",U="<",q=">",D=function(t){var n=(1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}).stripTags,e=void 0!==n&&n;return[].concat(t).reduce(function(t,n){return t+function(t,n){var e=n.stripTags,r=void 0!==e&&e;if(!t)return"";var o=typeof t;return"string"===o||"number"===o?t:"object"===o?!0===r?D(t.content,{stripTags:r}):null===t.content?""+U+t.tag+W(t.attrs)+z:""+U+t.tag+W(t.attrs)+q+D(t.content)+Q+t.tag+q:Array.isArray(t)?D(t,{stripTags:r}):""}(n,{stripTags:e})},"")};t.render=D,t.default=function(t,n){return(e=n,u="function"==typeof e?[e]:e||[],a={skipParse:!1},{process:function(t,n){var e=(a=n||{}).parser||P,r=a.render;if("function"!=typeof e)throw Error('"parser" is not a function, please pass to "process(input, { parser })" right function');var o=a.skipParse?t||[]:e(t,a),i=o;return o.walk=H,o.match=K,u.forEach(function(t){o=t(o,{parse:e,render:r,iterate:R,match:K})||o}),{get html(){if("function"!=typeof r)throw Error('"render" function not defined, please pass to "process(input, { render })"');return r(o,o.options)},tree:o,raw:i,messages:o.messages}}}).process(t,{render:D}).html;var e,u,a},Object.defineProperty(t,"__esModule",{value:!0})}); |
{ | ||
"name": "@bbob/html", | ||
"version": "2.2.0", | ||
"version": "2.3.1", | ||
"description": "HTML renderer for BBCode pareser BBob", | ||
"keywords": [], | ||
"dependencies": { | ||
"@bbob/core": "^2.2.0", | ||
"@bbob/plugin-helper": "^2.0.1" | ||
"@bbob/core": "^2.3.1", | ||
"@bbob/plugin-helper": "^2.3.1" | ||
}, | ||
@@ -33,3 +33,4 @@ "main": "lib/index.js", | ||
"lint": "../../node_modules/.bin/eslint .", | ||
"size": "../../node_modules/.bin/size-limit" | ||
"size": "../../node_modules/.bin/size-limit", | ||
"bundlesize": "../../node_modules/.bin/bundlesize" | ||
}, | ||
@@ -41,2 +42,8 @@ "size-limit": [ | ||
], | ||
"bundlesize": [ | ||
{ | ||
"path": "./dist/index.min.js", | ||
"maxSize": "3.5 KB" | ||
} | ||
], | ||
"publishConfig": { | ||
@@ -43,0 +50,0 @@ "registry": "https://registry.npmjs.org/" |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
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
50001
1174
0
Updated@bbob/core@^2.3.1
Updated@bbob/plugin-helper@^2.3.1