@@ -72,15 +72,13 @@ export function parseMdContent(md: string): TutorialFrame | never {
72
72
} ;
73
73
} else {
74
74
// match step
75
- const stepRegex = / ^ ( # { 3 } \s \ (? < s t e p T i t l e > .* ) [ \n \r ] + (?< stepContent > [ ^ ] * ) / ;
75
+ const stepRegex = / ^ ( # { 3 } \s (?< stepTitle > .* ) [ \n \r ] + (?< stepContent > [ ^ ] * ) ) / ;
76
76
const stepMatch : RegExpMatchArray | null = section . match ( stepRegex ) ;
77
77
if ( stepMatch && stepMatch . groups ) {
78
78
const { stepId, stepContent } = stepMatch . groups ;
79
79
mdContent . levels [ current . level ] . steps [ current . step ] = {
80
- id : stepId ,
80
+ id : ` ${ current . level + 1 } . ${ current . step + 1 } ` ,
81
81
content : stepContent . trim ( ) ,
82
- setup : { } ,
83
- solution : { } ,
84
82
} ;
85
83
current = { ...current , step : current . step + 1 } ;
86
84
} else {
@@ -131,76 +129,107 @@ export function parse(params: ParseParams): any {
131
129
132
130
// merge content levels and tutorial
133
131
134
- parsed . levels = mdContent . levels . map ( ( level : T . Level , levelIndex : number ) => {
135
- // add level setup commits
136
- const levelId = level . id ;
137
- if ( params . commits [ levelId ] ) {
138
- if ( ! level . setup ) {
139
- level . setup = { } ;
132
+ parsed . levels = mdContent . levels . map (
133
+ ( mdLevel : T . Level , mdLevelIndex : number ) => {
134
+ // add level setup commits
135
+ let level : T . Level = { ...mdLevel } ;
136
+
137
+ const configLevel = params . skeleton . levels [ mdLevelIndex ] ;
138
+
139
+ if ( configLevel ) {
140
+ // add level step commits
141
+ const { steps, ...configLevelProps } = configLevel ;
142
+ level = { ...configLevelProps , ...level } ;
143
+ if ( steps ) {
144
+ steps . forEach ( ( step : T . Step , index : number ) => {
145
+ console . log ( "step" , step ) ;
146
+ const mdStep = level . steps [ index ] ;
147
+ console . log ( "mdStep" , mdStep ) ;
148
+ step = {
149
+ ...step ,
150
+ ...mdStep ,
151
+ } ;
152
+
153
+ const stepKey = step . id ;
154
+ console . log ( "stepKey" , stepKey ) ;
155
+ const stepSetupKey = `${ stepKey } Q` ;
156
+ if ( params . commits [ stepSetupKey ] ) {
157
+ if ( ! step . setup ) {
158
+ step . setup = {
159
+ commits : [ ] ,
160
+ } ;
161
+ }
162
+ step . setup . commits = params . commits [ stepSetupKey ] ;
163
+ }
164
+
165
+ const stepSolutionKey = `${ stepKey } A` ;
166
+ if ( params . commits [ stepSolutionKey ] ) {
167
+ if ( ! step . solution ) {
168
+ step . solution = {
169
+ commits : [ ] ,
170
+ } ;
171
+ }
172
+ step . solution . commits = params . commits [ stepSolutionKey ] ;
173
+ }
174
+ // update level step
175
+ level . steps [ index ] = step ;
176
+ } ) ;
177
+ }
140
178
}
141
- level . setup . commits = params . commits [ levelId ] ;
142
- }
143
179
144
- // get yaml for level
145
- const configLevel = params . skeleton . levels . find (
146
- ( l : Partial < T . Level > ) => l . id === levelId
147
- ) ;
148
-
149
- let configSteps = { } ;
150
- if ( configLevel ) {
151
- const { steps, ...configLevelProps } = configLevel ;
152
- level = { ...configLevelProps , ...level } ;
153
- if ( steps ) {
154
- steps . forEach ( ( s : T . Step ) => {
155
- configSteps [ s . id ] = s ;
156
- } ) ;
180
+ // try {
181
+ // level.steps = (level.steps || []).map(
182
+ // (step: T.Step, stepIndex: number) => {
183
+ // const stepKey = `${levelId}S${stepIndex + 1}`;
184
+ // const stepSetupKey = `${stepKey}Q`;
185
+ // if (params.commits[stepSetupKey]) {
186
+ // if (!step.setup) {
187
+ // step.setup = {
188
+ // commits: [],
189
+ // };
190
+ // }
191
+ // step.setup.commits = params.commits[stepSetupKey];
192
+ // }
193
+
194
+ // const stepSolutionKey = `${stepKey}A`;
195
+ // if (params.commits[stepSolutionKey]) {
196
+ // if (!step.solution) {
197
+ // step.solution = {
198
+ // commits: [],
199
+ // };
200
+ // }
201
+ // step.solution.commits = params.commits[stepSolutionKey];
202
+ // }
203
+
204
+ // // add markdown
205
+ // const stepMarkdown: Partial<T.Step> =
206
+ // mdContent.levels[level.id].steps[step.id];
207
+ // if (stepMarkdown) {
208
+ // step = { ...step, ...stepMarkdown };
209
+ // }
210
+
211
+ // step.id = `${stepKey}`;
212
+ // return step;
213
+ // }
214
+ // );
215
+ // } catch (error) {
216
+ // console.log(JSON.stringify(level.steps));
217
+ // console.error("Error parsing level steps");
218
+ // console.error(error.message);
219
+ // }
220
+
221
+ console . log ( params . commits ) ;
222
+
223
+ if ( params . commits [ level . id ] ) {
224
+ if ( ! level . setup ) {
225
+ level . setup = { } ;
226
+ }
227
+ level . setup . commits = params . commits [ level . id ] ;
157
228
}
158
- }
159
229
160
- // add level step commits
161
- // try {
162
- // level.steps = (level.steps || []).map(
163
- // (step: T.Step, stepIndex: number) => {
164
- // const stepKey = `${levelId}S${stepIndex + 1}`;
165
- // const stepSetupKey = `${stepKey}Q`;
166
- // if (params.commits[stepSetupKey]) {
167
- // if (!step.setup) {
168
- // step.setup = {
169
- // commits: [],
170
- // };
171
- // }
172
- // step.setup.commits = params.commits[stepSetupKey];
173
- // }
174
-
175
- // const stepSolutionKey = `${stepKey}A`;
176
- // if (params.commits[stepSolutionKey]) {
177
- // if (!step.solution) {
178
- // step.solution = {
179
- // commits: [],
180
- // };
181
- // }
182
- // step.solution.commits = params.commits[stepSolutionKey];
183
- // }
184
-
185
- // // add markdown
186
- // const stepMarkdown: Partial<T.Step> =
187
- // mdContent.levels[level.id].steps[step.id];
188
- // if (stepMarkdown) {
189
- // step = { ...step, ...stepMarkdown };
190
- // }
191
-
192
- // step.id = `${stepKey}`;
193
- // return step;
194
- // }
195
- // );
196
- // } catch (error) {
197
- // console.log(JSON.stringify(level.steps));
198
- // console.error("Error parsing level steps");
199
- // console.error(error.message);
200
- // }
201
-
202
- return level ;
203
- } ) ;
230
+ return level ;
231
+ }
232
+ ) ;
204
233
205
234
return parsed ;
206
235
}
0 commit comments