// 針對性驗證:v1 之「行內塊(pill)邊界空格」與「原檔多餘空格收斂」是否 // 在新引擎落地(回應使用者提問)。 import assert from "node:assert/strict"; import { test } from "node:test"; import { setupDom, countTag } from "./helpers.mjs"; import { createJuzhen } from "../dist/juzhen.mjs"; const SPACING_ONLY = { jiya: false, longWord: false, jinze: false }; // ----- 原檔多餘空格收斂(STRIP_CJK_SPACE_ANS / STRIP_ANS_SPACE_CJK)----- test("strip:CJK↔Latin 間之作者空格被移除(間隙改由 margin,複製緊湊)", () => { const { document } = setupDom("
用 Neovim 寫
"); createJuzhen(SPACING_ONLY).render(document.body); const p = document.querySelector("p"); assert.equal(p.textContent, "用Neovim寫", "作者空格移除,間隙改由 jz-hws margin(copy 緊湊)"); assert.equal(countTag(p, "jz-hws"), 2); }); test("strip:間隙 copy-clean(無注入空白,textContent 不含中西間空白)", () => { const { document } = setupDom("裝 fzf 工具
"); createJuzhen(SPACING_ONLY).render(document.body); const p = document.querySelector("p"); assert.equal(p.textContent, "裝fzf工具", "中西間隙不入 textContent(純 copy-clean)"); assert.equal(countTag(p, "jz-hws"), 2); }); test("strip:全流程(含 charify)下作者空格仍收斂、不雙空格", () => { const { document } = setupDom('用 TypeScript 寫,很好
'); createJuzhen({}).render(document.body); const p = document.querySelector("p"); assert.ok(!/ {2,}/.test(p.textContent), "無雙空格:" + JSON.stringify(p.textContent)); }); // ----- 行內塊(pill)邊界空格(Pass B)----- test("pill:code 與 CJK 緊鄰兩側各插一 jz-hws", () => { const { document } = setupDom("用vim編輯
看x嗎
用 vim 編輯
他說:vim很好
卡尔·马克思
"); createJuzhen(SPACING_ONLY).render(document.body); assert.equal(countTag(document.querySelector("p"), "jz-hws"), 0, "· 兩側皆不應有間隙"); });