Security News
pnpm 10.0.0 Blocks Lifecycle Scripts by Default
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
posthtml-render
Advanced tools
The posthtml-render package is a utility for rendering PostHTML tree structures into HTML strings. It is commonly used in conjunction with PostHTML parsers and plugins to transform and generate HTML content programmatically.
Basic HTML Rendering
This feature allows you to render a basic HTML structure from a PostHTML tree. The code sample demonstrates rendering a simple div element with text content.
const render = require('posthtml-render');
const tree = [{ tag: 'div', content: 'Hello, World!' }];
const html = render(tree);
console.log(html); // <div>Hello, World!</div>
Nested HTML Elements
This feature allows you to render nested HTML elements. The code sample shows how to create a div element containing a nested span element.
const render = require('posthtml-render');
const tree = [{ tag: 'div', content: [{ tag: 'span', content: 'Nested content' }] }];
const html = render(tree);
console.log(html); // <div><span>Nested content</span></div>
Attributes Handling
This feature allows you to add attributes to HTML elements. The code sample demonstrates rendering an anchor tag with an href attribute.
const render = require('posthtml-render');
const tree = [{ tag: 'a', attrs: { href: 'https://example.com' }, content: 'Click here' }];
const html = render(tree);
console.log(html); // <a href="https://example.com">Click here</a>
htmlparser2 is a fast and forgiving HTML/XML parser. It can be used to parse HTML into a DOM-like structure, which can then be manipulated and rendered back to HTML. Compared to posthtml-render, htmlparser2 offers more comprehensive parsing capabilities but requires additional steps to render HTML.
Cheerio is a fast, flexible, and lean implementation of core jQuery designed specifically for the server. It parses HTML and XML documents and provides a jQuery-like API for manipulating the resulting structure. Cheerio is more feature-rich in terms of DOM manipulation compared to posthtml-render, but it is also heavier and more complex.
jsdom is a JavaScript implementation of the WHATWG DOM and HTML standards, primarily intended for use with Node.js. It allows you to create and manipulate a full DOM environment, including rendering HTML. jsdom is more powerful and comprehensive than posthtml-render, but it is also more resource-intensive.
npm i -D posthtml-render
NodeJS
import { render } from ''posthtml-render;
const tree = [];
const node = {};
node.tag = 'ul';
node.attrs = { class: 'list' };
node.content = [
'one',
'two',
'three'
].map((content) => ({ tag: 'li', content }));
tree.push(node);
const html = render(tree, options);
<ul class="list">
<li>one</li>
<li>two</li>
<li>three</li>
</ul>
Name | Type | Default | Description |
---|---|---|---|
singleTags | {Array<String|RegExp>} | [] | Specify custom single tags (self closing) |
closingSingleTag | {String} | > | Specify the single tag closing format |
quoteAllAttributes | {Boolean} | true | Put double quotes around all tags, even when not necessary. |
replaceQuote | {Boolean} | true | Replaces quotes in attribute values with "e; . |
quoteStyle | {0 or 1 or 2} | 2 | Specify the style of quote arround the attribute values |
singleTags
Specify custom single tags (self closing)
{String}
const render = require('posthtml-render')
const tree = [ { tag: 'name' } ]
const options = { singleTags: [ 'name' ] }
const html = render(tree, options)
result.html
<name>
{RegExp}
const render = require('posthtml-render')
const tree = [ { tag: '%=title%' } ]
const options = { singleTags: [ /^%.*%$/ ] }
const html = render(tree, options)
result.html
<%=title%>
closingSingleTag
Specify the single tag closing format
Formats
const render = require('posthtml-render')
const tree = [ { tag: 'img' } ]
'tag'
const html = render(tree, { closingSingleTag: 'tag' })
<custom></custom>
'slash'
const html = render(tree, { closingSingleTag: 'slash' })
<custom />
'default' (Default)
const html = render(tree)
<img>
'closeAs'
const tree = [ {
tag: 'custom',
closeAs: 'default' // Available types: `tag` | `slash` | `default`
} ]
const html = render(tree, { closingSingleTag: 'closeAs' })
<custom>
quoteAllAttributes
Specify if all attributes should be quoted.
true (Default)
<i src="index.js"></i>
false
<i src=index.js></i>
replaceQuote
Replaces quotes in attribute values with "e;
.
true (Default)
<img src="<?php echo $foo["e;bar"e;] ?>">
false
<img src="<?php echo $foo["bar"] ?>">
quoteStyle
2 (Default)
Attribute values are wrapped in double quotes:
<img src="https://example.com/example.png" onload="testFunc("test")">
1
Attribute values are wrapped in single quote:
<img src='https://example.com/example.png' onload='testFunc("test")'>
0
Quote style is based on attribute values (an alternative for replaceQuote
option):
<img src="https://example.com/example.png" onload='testFunc("test")'>
3.0.0 (2021-07-27)
FAQs
Renders PostHTML Tree to HTML/XML
We found that posthtml-render demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
Product
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
Research
Security News
Socket researchers have discovered multiple malicious npm packages targeting Solana private keys, abusing Gmail to exfiltrate the data and drain Solana wallets.