Skip to content

Commit d33ce6e

Browse files
authored
Merge pull request #36 from coderoad/fix/summary-parse
Fix/summary parse
2 parents 5222806 + 6c5187c commit d33ce6e

File tree

2 files changed

+44
-8
lines changed

2 files changed

+44
-8
lines changed

src/utils/parse.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export function parseMdContent(md: string): TutorialFrame | never {
5353
// Identify each part of the content
5454
parts.forEach((section: string) => {
5555
// match level
56-
const levelRegex = /^(#{2}\s(?<levelId>L\d+)\s(?<levelTitle>.*)[\n\r]*(>\s*(?<levelSummary>.*))?[\n\r]+(?<levelContent>[^]*))/;
56+
const levelRegex = /^(#{2}\s(?<levelId>L\d+)\s(?<levelTitle>.*)[\n\r]*(>\s(?<levelSummary>.*))?[\n\r]+(?<levelContent>[^]*))/;
5757
const levelMatch: RegExpMatchArray | null = section.match(levelRegex);
5858
if (levelMatch && levelMatch.groups) {
5959
const {
@@ -67,12 +67,13 @@ export function parseMdContent(md: string): TutorialFrame | never {
6767
mdContent.levels[levelId] = {
6868
id: levelId,
6969
title: levelTitle.trim(),
70-
summary: levelSummary
71-
? levelSummary.trim()
72-
: truncate(levelContent.split(/[\n\r]+/)[0].trim(), {
73-
length: 80,
74-
omission: "...",
75-
}),
70+
summary:
71+
levelSummary && levelSummary.trim().length
72+
? levelSummary.trim()
73+
: truncate(levelContent.split(/[\n\r]+/)[0].trim(), {
74+
length: 80,
75+
omission: "...",
76+
}),
7677
content: levelContent.trim(),
7778
};
7879
current = { level: levelId, step: "0" };

tests/parse.test.ts

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,10 +191,45 @@ But not including this line.
191191
title: "Put Level's title here",
192192
summary: "Some text.",
193193
content: "Some text.\n\nBut not including this line.",
194+
steps: [],
195+
},
196+
],
197+
};
198+
expect(result.levels[0]).toEqual(expected.levels[0]);
199+
});
200+
201+
it("should truncate a level with an empty summary", () => {
202+
const md = `# Title
203+
204+
Description.
205+
206+
## L1 Put Level's title here
207+
208+
>
209+
210+
Some text.
211+
212+
But not including this line.
213+
`;
214+
215+
const skeleton = { levels: [{ id: "L1" }] };
216+
const result = parse({
217+
text: md,
218+
skeleton,
219+
commits: {},
220+
});
221+
const expected = {
222+
levels: [
223+
{
224+
id: "L1",
225+
title: "Put Level's title here",
226+
summary: "Some text.",
227+
content: "Some text.\n\nBut not including this line.",
228+
steps: [],
194229
},
195230
],
196231
};
197-
expect(result.levels[0].summary).toEqual("Some text.");
232+
expect(result.levels[0]).toEqual(expected.levels[0]);
198233
});
199234

200235
it("should match line breaks with double line breaks for proper spacing", () => {

0 commit comments

Comments
 (0)