45 lines
1.9 KiB
TypeScript
45 lines
1.9 KiB
TypeScript
import assert from "node:assert/strict";
|
||
import test from "node:test";
|
||
|
||
import { promoteDefinitionLists } from "../src/lib/chat-definition-lists.ts";
|
||
|
||
test("consecutive label-colon paragraphs become a markdown list", () => {
|
||
const promoted = promoteDefinitionLists([
|
||
"行运焦点:",
|
||
"",
|
||
"月亮行运三分本命太阳(orb 0.29°):情绪与精力契合。",
|
||
"",
|
||
"天王星行运三分本命月亮(orb 0.75°):突发灵感可能冒出来。",
|
||
"",
|
||
"海王星行运对本命月亮(orb 0.87°):注意信息模糊。",
|
||
].join("\n"));
|
||
assert.match(promoted, /^- \*\*月亮行运三分本命太阳(orb 0\.29°)\*\*:情绪与精力契合。$/m);
|
||
assert.match(promoted, /^- \*\*天王星行运三分本命月亮(orb 0\.75°)\*\*:突发灵感可能冒出来。$/m);
|
||
assert.match(promoted, /行运焦点:/);
|
||
assert.equal(promoted.includes("- **行运焦点**:"), false);
|
||
});
|
||
|
||
test("code fences and existing lists are left alone", () => {
|
||
const source = [
|
||
"```",
|
||
"标签:不要动",
|
||
"```",
|
||
"",
|
||
"- 已有列表:保持原样",
|
||
].join("\n");
|
||
assert.equal(promoteDefinitionLists(source), source);
|
||
});
|
||
|
||
test("spoken four-heading prose with a colon stays paragraphs", () => {
|
||
const prose = [
|
||
"你这半年的事业是「外刚内不承」:表面硬气是真的硬——你确实扛得住场面,底下却承不住。别人看见的是硬气,盘上撑着的是另一层。",
|
||
"",
|
||
"推的是火星:事情由你自己起动、自己顶上去。别人帮不上忙,你也没法把责任分出去,更别指望场面自己圆。",
|
||
"",
|
||
"所以别去应火星的「硬顶」,也别去应土星弱位的「拖」。去扮演太阳的「署名」:把事做成一件能签字的作品,而不是一场硬顶。",
|
||
].join("\n");
|
||
const result = promoteDefinitionLists(prose);
|
||
assert.equal(result, prose);
|
||
assert.equal(result.includes("- **"), false);
|
||
});
|