Skip to content

Commit 142a047

Browse files
committed
run multi-line step test
Signed-off-by: shmck <[email protected]>
1 parent 5f005ea commit 142a047

File tree

2 files changed

+865
-790
lines changed

2 files changed

+865
-790
lines changed

Diff for: src/utils/parse.ts

+44-30
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export function parseMdContent(md: string): TutorialFrame | never {
5252
// Identify each part of the content
5353
parts.forEach((section: string) => {
5454
// match level
55-
const levelRegex = /^(##\s(?<levelId>L\d+)\s(?<levelTitle>.*)[\n\r]*(>\s*(?<levelSummary>.*))?[\n\r]+(?<levelContent>[^]*))/;
55+
const levelRegex = /^(#{2}\s(?<levelId>L\d+)\s(?<levelTitle>.*)[\n\r]*(>\s*(?<levelSummary>.*))?[\n\r]+(?<levelContent>[^]*))/;
5656
const levelMatch: RegExpMatchArray | null = section.match(levelRegex);
5757
if (levelMatch && levelMatch.groups) {
5858
const {
@@ -73,10 +73,18 @@ export function parseMdContent(md: string): TutorialFrame | never {
7373
};
7474
} else {
7575
// match step
76-
const stepRegex = /^(###\s(?<stepId>(?<levelId>L\d+)S\d+)\s(?<stepTitle>.*)[\n\r]+(?<stepContent>[^]*))/;
76+
const stepRegex = /^(#{3}\s(?<stepId>(?<levelId>L\d+)S\d+)\s(?<stepTitle>.*)[\n\r]+(?<stepContent>[^]*))/;
7777
const stepMatch: RegExpMatchArray | null = section.match(stepRegex);
7878
if (stepMatch && stepMatch.groups) {
7979
const { stepId, stepContent } = stepMatch.groups;
80+
81+
// parse hints from stepContent
82+
// const hintRegex = /^(#{4}\sHINTS[\n\r]+(?<hintContent>[^]*))/g;
83+
84+
// if (!!stepContent.match(hintRegex)) {
85+
// console.log("HAS HINT");
86+
// }
87+
8088
mdContent.steps[stepId] = {
8189
id: stepId,
8290
content: stepContent.trim(),
@@ -135,39 +143,45 @@ export function parse(params: ParseParams): any {
135143
}
136144

137145
// add level step commits
138-
level.steps = (level.steps || []).map(
139-
(step: T.Step, stepIndex: number) => {
140-
const stepKey = `${levelSetupKey}S${stepIndex + 1}`;
141-
const stepSetupKey = `${stepKey}Q`;
142-
if (params.commits[stepSetupKey]) {
143-
if (!step.setup) {
144-
step.setup = {
145-
commits: [],
146-
};
146+
try {
147+
level.steps = (level.steps || []).map(
148+
(step: T.Step, stepIndex: number) => {
149+
const stepKey = `${levelSetupKey}S${stepIndex + 1}`;
150+
const stepSetupKey = `${stepKey}Q`;
151+
if (params.commits[stepSetupKey]) {
152+
if (!step.setup) {
153+
step.setup = {
154+
commits: [],
155+
};
156+
}
157+
step.setup.commits = params.commits[stepSetupKey];
147158
}
148-
step.setup.commits = params.commits[stepSetupKey];
149-
}
150159

151-
const stepSolutionKey = `${stepKey}A`;
152-
if (params.commits[stepSolutionKey]) {
153-
if (!step.solution) {
154-
step.solution = {
155-
commits: [],
156-
};
160+
const stepSolutionKey = `${stepKey}A`;
161+
if (params.commits[stepSolutionKey]) {
162+
if (!step.solution) {
163+
step.solution = {
164+
commits: [],
165+
};
166+
}
167+
step.solution.commits = params.commits[stepSolutionKey];
157168
}
158-
step.solution.commits = params.commits[stepSolutionKey];
159-
}
160169

161-
// add markdown
162-
const stepMarkdown: Partial<T.Step> = mdContent.steps[step.id];
163-
if (stepMarkdown) {
164-
step = { ...step, ...stepMarkdown };
165-
}
170+
// add markdown
171+
const stepMarkdown: Partial<T.Step> = mdContent.steps[step.id];
172+
if (stepMarkdown) {
173+
step = { ...step, ...stepMarkdown };
174+
}
166175

167-
step.id = `${stepKey}`;
168-
return step;
169-
}
170-
);
176+
step.id = `${stepKey}`;
177+
return step;
178+
}
179+
);
180+
} catch (error) {
181+
console.log(JSON.stringify(level.steps));
182+
console.error("Error parsing level steps");
183+
console.error(error.message);
184+
}
171185

172186
return level;
173187
})

0 commit comments

Comments
 (0)