mirror of
https://github.com/pbakaus/impeccable.git
synced 2026-09-12 06:06:37 +03:00
Fix wrapped design characteristics
Join indented Markdown bullet continuations and keep them out of Overview philosophy text. AI assistance: Codex reproduced the issue, implemented the fix, and added regression coverage under maintainer authorization.
This commit is contained in:
@@ -330,17 +330,16 @@ function extractOverview(section) {
|
||||
if (!section) return null;
|
||||
const text = section.lines.join('\n');
|
||||
const northStar = text.match(/\*\*Creative North Star:\s*"([^"]+)"\*\*/);
|
||||
const keyChars = [];
|
||||
const keyCharMatch = text.match(/\*\*Key Characteristics:\*\*\s*\n([\s\S]+?)(?:\n##|\n###|$)/);
|
||||
if (keyCharMatch) {
|
||||
for (const line of keyCharMatch[1].split('\n')) {
|
||||
const m = line.match(/^\s*[-*]\s+(.+)$/);
|
||||
if (m) keyChars.push(stripBold(m[1].trim()));
|
||||
}
|
||||
}
|
||||
const keyChars = keyCharMatch
|
||||
? collectBullets(keyCharMatch[1].split('\n')).map((bullet) => stripBold(bullet.trim()))
|
||||
: [];
|
||||
const prose = keyCharMatch
|
||||
? text.slice(0, keyCharMatch.index) + text.slice(keyCharMatch.index + keyCharMatch[0].length)
|
||||
: text;
|
||||
|
||||
// Philosophy paragraphs: everything that isn't a rule header or key-char block
|
||||
const paragraphs = collectParagraphs(section.lines).filter(
|
||||
const paragraphs = collectParagraphs(prose.split('\n')).filter(
|
||||
(p) =>
|
||||
!p.startsWith('**Creative North Star') &&
|
||||
!p.startsWith('**Key Characteristics')
|
||||
|
||||
@@ -143,3 +143,28 @@ Prose.
|
||||
assert.equal(model.frontmatter.rounded['"2xl"'], undefined);
|
||||
});
|
||||
});
|
||||
|
||||
describe('parseDesignMd overview branch', () => {
|
||||
it('joins wrapped Key Characteristics bullets without leaking continuations into philosophy', () => {
|
||||
const md = `# Design System: Example
|
||||
|
||||
## Overview
|
||||
|
||||
**Creative North Star: "Structured clarity"**
|
||||
|
||||
**Key Characteristics:**
|
||||
|
||||
- Status remains understandable without relying on color
|
||||
alone.
|
||||
- Navigation controls remain visible when the viewport becomes
|
||||
narrow.
|
||||
`;
|
||||
const overview = parseDesignMd(md).overview;
|
||||
|
||||
assert.deepEqual(overview.keyCharacteristics, [
|
||||
'Status remains understandable without relying on color alone.',
|
||||
'Navigation controls remain visible when the viewport becomes narrow.',
|
||||
]);
|
||||
assert.deepEqual(overview.philosophy, []);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user