Skip to content

Commit c98f572

Browse files
authored
fix: dedupe code blocks with nested line divs
fix: dedupe code blocks with nested line divs
1 parent 73870a8 commit c98f572

5 files changed

Lines changed: 24 additions & 2 deletions

File tree

apps/desktop/changelog/next.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
## No longer broken
88

9+
- Fixed duplicated lines in code blocks from feeds that wrap each line in nested divs (e.g., Cloudflare's changelog)
10+
911
## Thanks
1012

1113
Special thanks to volunteer contributors @ for their valuable contributions

apps/desktop/layer/renderer/src/lib/__tests__/parse-html.test.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,20 @@ describe("extractCodeFromHtml", () => {
365365
`)
366366
})
367367

368+
// https://developers.cloudflare.com/changelog/rss/index.xml
369+
it("should not duplicate code blocks from cloudflare changelog", () => {
370+
const htmlString = `<div><div><span>{</span></div></div><div><div><span> </span><span>"</span><span>$schema</span><span>"</span><span>:</span><span> </span><span>"./node_modules/wrangler/config-schema.json"</span><span>,</span></div></div><div><div><span> </span><span>"</span><span>pipelines</span><span>"</span><span>:</span><span> </span><span>[</span></div></div><div><div><span>}</span></div></div>`
371+
const result = extractCodeFromHtml(htmlString)
372+
373+
expect(result).toMatchInlineSnapshot(`
374+
"{
375+
"$schema": "./node_modules/wrangler/config-schema.json",
376+
"pipelines": [
377+
}
378+
"
379+
`)
380+
})
381+
368382
it("no <code />", () => {
369383
const htmlString = `<span class="line"><span class="keyword">if</span> theme.<span class="property">twikoo</span>.<span class="property">enable</span> == <span class="literal">true</span></span><br><span class="line"> #tcomment</span><br><span class="line"> <span class="title function_">script</span>(src=<span class="string">'https://registry.npmmirror.com/twikoo/1.6.39/files/dist/twikoo.all.min.js'</span>)</span><br><span class="line"> script.</span><br><span class="line"> twikoo.<span class="title function_">init</span>({</span><br><span class="line"> <span class="attr">envId</span>: <span class="string">'#{theme.twikoo.envId}'</span>,</span><br><span class="line"> <span class="attr">el</span>: <span class="string">'#tcomment'</span>,</span><br><span class="line"> <span class="attr">region</span>: <span class="string">'#{theme.twikoo.region}'</span>,</span><br><span class="line"> <span class="attr">path</span>: <span class="string">'#{theme.twikoo.path}'</span>,</span><br><span class="line"> <span class="attr">onCommentLoaded</span>: <span class="keyword">function</span> (<span class="params"></span>) {</span><br><span class="line"> <span class="keyword">const</span> commentCountElement = <span class="variable language_">document</span>.<span class="title function_">querySelector</span>(<span class="string">'.tk-comments-count'</span>);</span><br><span class="line"> <span class="keyword">const</span> targetElement = <span class="variable language_">document</span>.<span class="title function_">querySelector</span>(<span class="string">'.waline-comment-count'</span>);</span><br><span class="line"> <span class="keyword">if</span> (commentCountElement) {</span><br><span class="line"> <span class="keyword">const</span> countSpan = commentCountElement.<span class="title function_">querySelector</span>(<span class="string">'span:first-child'</span>);</span><br><span class="line"> <span class="keyword">const</span> commentCount = <span class="built_in">parseInt</span>(countSpan.<span class="property">textContent</span>);</span><br><span class="line"> targetElement.<span class="property">textContent</span> = commentCount;</span><br><span class="line"> } <span class="keyword">else</span> {</span><br><span class="line"> <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="string">'未找到评论数量元素'</span>);</span><br><span class="line"> }</span><br><span class="line"> }</span><br><span class="line"> })</span><br><span class="line"></span><br>`
370384
const result = extractCodeFromHtml(htmlString)

apps/desktop/layer/renderer/src/lib/parse-html.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,9 @@ export function extractCodeFromHtml(htmlString: string) {
269269

270270
if (divElements.length > 0) {
271271
divElements.forEach((div) => {
272-
code += `${div.textContent}\n`
272+
if (!div.querySelector("div")) {
273+
code += `${div.textContent}\n`
274+
}
273275
})
274276
return code
275277
}

apps/mobile/changelog/next.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
## No longer broken
88

9+
- Fixed duplicated lines in code blocks from feeds that wrap each line in nested divs (e.g., Cloudflare's changelog)
10+
911
## Thanks
1012

1113
Special thanks to volunteer contributors @ for their valuable contributions

apps/mobile/web-app/html-renderer/src/parser.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,9 @@ function extractCodeFromHtml(htmlString: string) {
197197

198198
if (divElements.length > 0) {
199199
divElements.forEach((div) => {
200-
code += `${div.textContent}\n`
200+
if (!div.querySelector("div")) {
201+
code += `${div.textContent}\n`
202+
}
201203
})
202204
return code
203205
}

0 commit comments

Comments
 (0)