mirror of
https://github.com/tenrok/BBob.git
synced 2026-06-08 17:22:26 +03:00
refactor(*): convert to babel and generation to lib, es, dist folders (#2)
* refactor(*): convert to babel and generation to lib, es, dist * chore(*): remove generated files * fix(*): lint run command
This commit is contained in:
committed by
GitHub
parent
d22a2895a4
commit
32a7fb51da
@@ -0,0 +1,47 @@
|
||||
const { attrValue } = require('@bbob/plugin-helper');
|
||||
|
||||
/**
|
||||
* Transforms attrs to html params string
|
||||
* @param values
|
||||
*/
|
||||
const attrs = values =>
|
||||
Object.keys(values)
|
||||
.reduce((arr, key) => [...arr, attrValue(key, values[key])], [''])
|
||||
.join(' ');
|
||||
|
||||
const renderNode = (node, { stripTags = false }) => {
|
||||
if (!node) return '';
|
||||
const type = typeof node;
|
||||
|
||||
if (type === 'string' || type === 'number') {
|
||||
return node;
|
||||
}
|
||||
|
||||
if (type === 'object') {
|
||||
if (stripTags === true) {
|
||||
// eslint-disable-next-line no-use-before-define
|
||||
return renderNodes(node.content, { stripTags });
|
||||
}
|
||||
|
||||
if (node.content === null) {
|
||||
return `<${node.tag}${attrs(node.attrs)} />`;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line no-use-before-define
|
||||
return `<${node.tag}${attrs(node.attrs)}>${renderNodes(node.content)}</${node.tag}>`;
|
||||
}
|
||||
|
||||
if (Array.isArray(node)) {
|
||||
// eslint-disable-next-line no-use-before-define
|
||||
return renderNodes(node, { stripTags });
|
||||
}
|
||||
|
||||
return '';
|
||||
};
|
||||
|
||||
const renderNodes = (nodes, { stripTags = false } = {}) => []
|
||||
.concat(nodes)
|
||||
.reduce((r, node) => r + renderNode(node, { stripTags }), '');
|
||||
|
||||
export const render = renderNodes;
|
||||
export default renderNodes;
|
||||
Reference in New Issue
Block a user