30 lines
615 B
JavaScript
30 lines
615 B
JavaScript
'use strict'
|
||
|
||
module.exports = toString
|
||
|
||
// Get the text content of a node.
|
||
// Prefer the node’s plain-text fields, otherwise serialize its children,
|
||
// and if the given value is an array, serialize the nodes in it.
|
||
function toString(node) {
|
||
return (
|
||
(node &&
|
||
(node.value ||
|
||
node.alt ||
|
||
node.title ||
|
||
('children' in node && all(node.children)) ||
|
||
('length' in node && all(node)))) ||
|
||
''
|
||
)
|
||
}
|
||
|
||
function all(values) {
|
||
var result = []
|
||
var index = -1
|
||
|
||
while (++index < values.length) {
|
||
result[index] = toString(values[index])
|
||
}
|
||
|
||
return result.join('')
|
||
}
|