fix: 🐛 Förbättrad parsning av nyhetsbrev (#125)
* fix: 🐛 Förbättrad parsning av nyhetsbrev * refactor: 💡 unfolded loop to get rid of linting error. :( * Clean up rearrangeWhitespace * undo Co-authored-by: Viktor Sarström <viktorsarstrom@gmail.com>
This commit is contained in:
parent
79e2a7577b
commit
82fa2dcc84
|
@ -168,7 +168,7 @@ describe('newsItem', () => {
|
||||||
const item = newsItemDetails(response)
|
const item = newsItemDetails(response)
|
||||||
|
|
||||||
const expected =
|
const expected =
|
||||||
'[1177 hemsida](https://www.1177.se/sjukdomar--besvar/hud-har-och-naglar/harbotten-och-harsackar/huvudloss/)'
|
'[1177 hemsida](https://www.1177.se/sjukdomar--besvar/hud-har-och-naglar/harbotten-och-harsackar/huvudloss/)'
|
||||||
expect(item.body).toContain(expected)
|
expect(item.body).toContain(expected)
|
||||||
expect(item.body).toContain(' **tillfället** ')
|
expect(item.body).toContain(' **tillfället** ')
|
||||||
})
|
})
|
||||||
|
|
|
@ -65,7 +65,7 @@ describe('parseHtml', () => {
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>`
|
</div>`
|
||||||
const expected = `# Hello #
|
const expected = `# Hello
|
||||||
**World**
|
**World**
|
||||||
- Foo
|
- Foo
|
||||||
|
|
||||||
|
@ -92,8 +92,7 @@ Alla knep är tillåtna.
|
||||||
Kolla in Reddit: [https://reddit.com/water-balloons/where-to-buy/](https://reddit.com/water-balloons/where-to-buy/)
|
Kolla in Reddit: [https://reddit.com/water-balloons/where-to-buy/](https://reddit.com/water-balloons/where-to-buy/)
|
||||||
|
|
||||||
...och här: [https://reddit.com/splash-wars/](https://reddit.com/splash-wars/)
|
...och här: [https://reddit.com/splash-wars/](https://reddit.com/splash-wars/)
|
||||||
|
## Om att vara hemma vid symtom
|
||||||
## Om att vara hemma vid symtom ##
|
|
||||||
|
|
||||||
Även HackerNews är bra.
|
Även HackerNews är bra.
|
||||||
|
|
||||||
|
@ -101,10 +100,10 @@ Kolla in Reddit: [https://reddit.com/water-balloons/where-to-buy/](https://reddi
|
||||||
|
|
||||||
Vi fortsätter också att:
|
Vi fortsätter också att:
|
||||||
|
|
||||||
- hålla avstånd.
|
- hålla avstånd.
|
||||||
- ha flera digitala möten.
|
- ha flera digitala möten.
|
||||||
- tvätta händerna.
|
- tvätta händerna.
|
||||||
- undvika kollektivtrafik om det är möjligt.
|
- undvika kollektivtrafik om det är möjligt.
|
||||||
|
|
||||||
- stanna hemma även när man bara känner sig lite sjuk.
|
- stanna hemma även när man bara känner sig lite sjuk.
|
||||||
- vädra ofta
|
- vädra ofta
|
||||||
|
|
|
@ -41,13 +41,40 @@ const deepClean = (node: HTMLElement): HTMLElement => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const rearrangeWhitespace = (html: string = ''): string => {
|
const rearrangeWhitespace = (html: string = ''): string => {
|
||||||
let content = html.split(' ').join('&nbsp;')
|
let content = html
|
||||||
|
.replace(/<span[^>]*>/gm, '')
|
||||||
|
.split('</span>').join('')
|
||||||
|
.replace(/<div[^>]*>/gm, '')
|
||||||
|
.split('</div>').join('')
|
||||||
|
.split(' ').join('&nbsp;')
|
||||||
|
|
||||||
|
// FIXME: Make a loop that doesn't break linting
|
||||||
trimNodes.forEach((trimNode) => {
|
trimNodes.forEach((trimNode) => {
|
||||||
content = content.split(`<${trimNode}> `).join(` <${trimNode}>`)
|
content = content.split(`<${trimNode}> `).join(` <${trimNode}>`)
|
||||||
content = content.split(` </${trimNode}>`).join(`</${trimNode}> `)
|
content = content.split(` </${trimNode}>`).join(`</${trimNode}> `)
|
||||||
content = content.split(`<${trimNode}>&nbsp;`).join(`&nbsp;<${trimNode}>`)
|
content = content.split(`<${trimNode}>&nbsp;`).join(` <${trimNode}>`)
|
||||||
content = content.split(`&nbsp;</${trimNode}>`).join(`</${trimNode}>&nbsp;`)
|
content = content.split(`&nbsp;</${trimNode}>`).join(`</${trimNode}> `)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
trimNodes.forEach((trimNode) => {
|
||||||
|
content = content.split(`<${trimNode}> `).join(` <${trimNode}>`)
|
||||||
|
content = content.split(` </${trimNode}>`).join(`</${trimNode}> `)
|
||||||
|
content = content.split(`<${trimNode}>&nbsp;`).join(` <${trimNode}>`)
|
||||||
|
content = content.split(`&nbsp;</${trimNode}>`).join(`</${trimNode}> `)
|
||||||
|
})
|
||||||
|
trimNodes.forEach((trimNode) => {
|
||||||
|
content = content.split(`<${trimNode}> `).join(` <${trimNode}>`)
|
||||||
|
content = content.split(` </${trimNode}>`).join(`</${trimNode}> `)
|
||||||
|
content = content.split(`<${trimNode}>&nbsp;`).join(` <${trimNode}>`)
|
||||||
|
content = content.split(`&nbsp;</${trimNode}>`).join(`</${trimNode}> `)
|
||||||
|
})
|
||||||
|
trimNodes.forEach((trimNode) => {
|
||||||
|
content = content.split(`<${trimNode}> `).join(` <${trimNode}>`)
|
||||||
|
content = content.split(` </${trimNode}>`).join(`</${trimNode}> `)
|
||||||
|
content = content.split(`<${trimNode}>&nbsp;`).join(` <${trimNode}>`)
|
||||||
|
content = content.split(`&nbsp;</${trimNode}>`).join(`</${trimNode}> `)
|
||||||
|
})
|
||||||
|
|
||||||
return content
|
return content
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,6 +93,12 @@ const overides = {
|
||||||
img: (node: Node) => `![${node.attrs.title || ''}](${node.attrs.src})`,
|
img: (node: Node) => `![${node.attrs.title || ''}](${node.attrs.src})`,
|
||||||
i: (node: Node) => `*${node.md}*`,
|
i: (node: Node) => `*${node.md}*`,
|
||||||
b: (node: Node) => `**${node.md}**`,
|
b: (node: Node) => `**${node.md}**`,
|
||||||
|
'h1': (node: Node) => `# ${node.md}\n`,
|
||||||
|
'h2': (node: Node) => `## ${node.md}\n`,
|
||||||
|
'h3': (node: Node) => `### ${node.md}\n`,
|
||||||
|
'h4': (node: Node) => `#### ${node.md}\n`,
|
||||||
|
'h5': (node: Node) => `##### ${node.md}\n`,
|
||||||
|
'h6': (node: Node) => `###### ${node.md}\n`,
|
||||||
}
|
}
|
||||||
|
|
||||||
export const toMarkdown = (html: string): string => {
|
export const toMarkdown = (html: string): string => {
|
||||||
|
|
Loading…
Reference in New Issue