Treat all tweets as elements so we dont need to cast

This commit is contained in:
Jackson Harper
2022-11-01 10:31:12 +08:00
parent a4f0698974
commit 392ac15a62

View File

@ -106,32 +106,26 @@ export class SubstackHandler extends ContentHandler {
return dom
}
const recurse = (node: Node, f: (node: Node) => void) => {
for (let i = 0; i < node.childNodes.length; i++) {
const child = node.childNodes[i]
const recurse = (node: Element, f: (node: Element) => void) => {
for (let i = 0; i < node.children.length; i++) {
const child = node.children[i]
recurse(child, f)
f(child)
}
}
const isHTMLElement = (node: Node): node is HTMLElement => {
return node.nodeType == 1
}
for (const tweet of Array.from(staticTweets)) {
tweet.className = preClassName + 'tweet'
tweet.removeAttribute('style')
// get all children, rename their class, remove style
// elements (style will be handled in the reader)
recurse(tweet, (n: Node) => {
if (isHTMLElement(n)) {
const className = n.className
if (className.startsWith('tweet-')) {
n.className = preClassName + className
}
n.removeAttribute('style')
recurse(tweet, (n: Element) => {
const className = n.className
if (className.startsWith('tweet-')) {
n.className = preClassName + className
}
n.removeAttribute('style')
})
}