// 針對性驗證: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編輯

"); createJuzhen(SPACING_ONLY).render(document.body); assert.equal(countTag(document.querySelector("p"), "jz-hws"), 2); }); test("pill:code 與 Latin 緊鄰亦插間隙(PILL_NEIGHBOR 含 A-Za-z0-9)", () => { const { document } = setupDom("

x

"); createJuzhen(SPACING_ONLY).render(document.body); assert.equal(countTag(document.querySelector("p"), "jz-hws"), 2); }); test("pill:已有作者空格時收斂為單一 jz-hws(不雙空格)", () => { const { document } = setupDom("

vim 編輯

"); createJuzhen(SPACING_ONLY).render(document.body); const p = document.querySelector("p"); assert.ok(!/ {2,}/.test(p.textContent), "無雙空格:" + JSON.stringify(p.textContent)); assert.equal(countTag(p, "jz-hws"), 2); }); test("pill:標點與 code 之間不強插間隙(鄰字非 PILL_NEIGHBOR)", () => { const { document } = setupDom("

他說:vim很好

"); createJuzhen(SPACING_ONLY).render(document.body); // : 非 PILL_NEIGHBOR → 左側不插;code|很 右側插 1。 assert.equal(countTag(document.querySelector("p"), "jz-hws"), 1); }); // ----- 間隔號 ·(U+00B7)不觸發中西間隙 ----- test("間隔號:姓名 · 兩側不插 jz-hws(· 屬 CJK 標點,非西文)", () => { const { document } = setupDom("

卡尔·马克思

"); createJuzhen(SPACING_ONLY).render(document.body); assert.equal(countTag(document.querySelector("p"), "jz-hws"), 0, "· 兩側皆不應有間隙"); });