A new option customNodeStrategy
has been added. Check readme for details.
For your requirements, the following code may achieve your needs:
import truncate, { type IOptions, type ICustomNodeStrategy } from 'truncate-html'
// argument node is a cheerio instance
const customNodeStrategy: ICustomNodeStrategy = node => {
// keep details and treat it as nothing inside
if (node.is('details')) {
return 'keep'
}
}
const html = '<div><details><summary>Click me</summary><p>Some details</p></details>other things</div>'
const options: IOptions = {
length: 3,
customNodeStrategy
}
truncate(html, options)
// => <div><details><summary>Click me</summary><p>Some details</p></details>oth...</div>
ref: #41