5.0 KiB
hast-util-to-text
hast utility to get the plain-text value of a node.
This is like the DOMs Node#innerText getter but there are some deviations from
the spec.
The resulting text is returned.
You’d typically want to use hast-util-to-string
(textContent), but hast-util-to-text (innerText) adds for example line
breaks where <br> elements are used.
Install
npm:
npm install hast-util-to-text
Use
var h = require('hastscript')
var toText = require('hast-util-to-text')
var tree = h('div', [
h('h1', {hidden: true}, 'Alpha.'),
h('article', [
h('p', ['Bravo', h('br'), 'charlie.']),
h('p', 'Delta echo \t foxtrot.')
])
])
console.log(toText(tree))
Yields:
Bravo
charlie.
Delta echo foxtrot.
API
toText(node)
Utility to get the plain-text value of a node.
- If
nodeis a comment, returns itsvalue - If
nodeis a text, applies normal white-space collapsing to itsvalue, as defined by the CSS Text spec - If
nodeis a root or element, applies an algorithm similar to theinnerTextgetter as defined by HTML
Parameters
node(Node) — Thing to stringify
Returns
string — Stringified node.
Notes
- If
nodeis an element that is not displayed (such as ahead), we’ll still use theinnerTextalgorithm instead of switching totextContent - If descendants of
nodeare elements that are not displayed, they are ignored - CSS is not considered, except for the default user agent style sheet
- A line feed is collapsed instead of ignored in cases where Fullwidth, Wide, or Halfwidth East Asian Width characters are used, the same goes for a case with Chinese, Japanese, or Yi writing systems
- Replaced elements (such as
audio) are treated like non-replaced elements
Security
hast-util-to-text does not change the syntax tree so there are no
openings for cross-site scripting (XSS) attacks.
Related
hast-util-to-string— Get the plain-text value (textContent)hast-util-from-text— Set the plain-text value (innerText)hast-util-from-string— Set the plain-text value (textContent)
Contribute
See contributing.md in syntax-tree/.github for ways to get
started.
See support.md for ways to get help.
This project has a code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.