File tree 2 files changed +69
-5
lines changed
2 files changed +69
-5
lines changed Original file line number Diff line number Diff line change @@ -53,12 +53,20 @@ export function parseMdContent(md: string): TutorialFrame | never {
53
53
const stepMatch = section . match ( stepRegex ) ;
54
54
55
55
if ( levelMatch ) {
56
+ const {
57
+ levelId,
58
+ levelTitle,
59
+ levelSummary,
60
+ levelContent,
61
+ } = levelMatch . groups ;
56
62
const level = {
57
- [ levelMatch . groups . levelId ] : {
58
- id : levelMatch . groups . levelId ,
59
- title : levelMatch . groups . levelTitle ,
60
- summary : levelMatch . groups . levelSummary . trim ( ) ,
61
- content : levelMatch . groups . levelContent . trim ( ) ,
63
+ [ levelId ] : {
64
+ id : levelId ,
65
+ title : levelTitle ,
66
+ summary : levelSummary
67
+ ? levelSummary . trim ( )
68
+ : _ . truncate ( levelContent , { length : 80 , omission : "..." } ) ,
69
+ content : levelContent . trim ( ) ,
62
70
} ,
63
71
} ;
64
72
Original file line number Diff line number Diff line change @@ -88,4 +88,60 @@ levels:
88
88
} ;
89
89
expect ( result . levels ) . toEqual ( expected . levels ) ;
90
90
} ) ;
91
+
92
+ it ( "should parse a level with no level description" , ( ) => {
93
+ const md = `# Title
94
+
95
+ Description.
96
+
97
+ ## L1 Put Level's title here
98
+
99
+ Some text that becomes the summary
100
+ ` ;
101
+
102
+ const yaml = `version: "0.1.0"
103
+ levels:
104
+ - id: L1
105
+ ` ;
106
+ const result = parse ( md , yaml ) ;
107
+ const expected = {
108
+ levels : [
109
+ {
110
+ id : "L1" ,
111
+ title : "Put Level's title here" ,
112
+ summary : "Some text that becomes the summary" ,
113
+ content : "Some text that becomes the summary" ,
114
+ } ,
115
+ ] ,
116
+ } ;
117
+ expect ( result . levels ) . toEqual ( expected . levels ) ;
118
+ } ) ;
119
+
120
+ it ( "should truncate a level description" , ( ) => {
121
+ const md = `# Title
122
+
123
+ Description.
124
+
125
+ ## L1 Put Level's title here
126
+
127
+ Some text that becomes the summary and goes beyond the maximum length of 80 so that it gets truncated at the end
128
+ ` ;
129
+
130
+ const yaml = `version: "0.1.0"
131
+ levels:
132
+ - id: L1
133
+ ` ;
134
+ const result = parse ( md , yaml ) ;
135
+ const expected = {
136
+ levels : [
137
+ {
138
+ id : "L1" ,
139
+ title : "Put Level's title here" ,
140
+ summary : "Some text that becomes the summary" ,
141
+ content : "Some text that becomes the summary" ,
142
+ } ,
143
+ ] ,
144
+ } ;
145
+ expect ( result . levels [ 0 ] . summary ) . toMatch ( / \. \. \. $ / ) ;
146
+ } ) ;
91
147
} ) ;
You can’t perform that action at this time.
0 commit comments