@@ -5,7 +5,7 @@ import { extractFrontmatter, parseFrontmatter } from '../dist/index.js';
5
5
const bom = '\uFEFF' ;
6
6
7
7
describe ( 'extractFrontmatter' , ( ) => {
8
- it ( 'works ' , ( ) => {
8
+ it ( 'handles YAML ' , ( ) => {
9
9
const yaml = `\nfoo: bar\n` ;
10
10
assert . equal ( extractFrontmatter ( `---${ yaml } ---` ) , yaml ) ;
11
11
assert . equal ( extractFrontmatter ( `${ bom } ---${ yaml } ---` ) , yaml ) ;
@@ -19,10 +19,25 @@ describe('extractFrontmatter', () => {
19
19
assert . equal ( extractFrontmatter ( `---${ yaml } ---` ) , undefined ) ;
20
20
assert . equal ( extractFrontmatter ( `text\n---${ yaml } ---\n\ncontent` ) , undefined ) ;
21
21
} ) ;
22
+
23
+ it ( 'handles TOML' , ( ) => {
24
+ const toml = `\nfoo = "bar"\n` ;
25
+ assert . equal ( extractFrontmatter ( `+++${ toml } +++` ) , toml ) ;
26
+ assert . equal ( extractFrontmatter ( `${ bom } +++${ toml } +++` ) , toml ) ;
27
+ assert . equal ( extractFrontmatter ( `\n+++${ toml } +++` ) , toml ) ;
28
+ assert . equal ( extractFrontmatter ( `\n \n+++${ toml } +++` ) , toml ) ;
29
+ assert . equal ( extractFrontmatter ( `+++${ toml } +++\ncontent` ) , toml ) ;
30
+ assert . equal ( extractFrontmatter ( `${ bom } +++${ toml } +++\ncontent` ) , toml ) ;
31
+ assert . equal ( extractFrontmatter ( `\n\n+++${ toml } +++\n\ncontent` ) , toml ) ;
32
+ assert . equal ( extractFrontmatter ( `\n \n+++${ toml } +++\n\ncontent` ) , toml ) ;
33
+ assert . equal ( extractFrontmatter ( ` +++${ toml } +++` ) , undefined ) ;
34
+ assert . equal ( extractFrontmatter ( `+++${ toml } +++` ) , undefined ) ;
35
+ assert . equal ( extractFrontmatter ( `text\n+++${ toml } +++\n\ncontent` ) , undefined ) ;
36
+ } ) ;
22
37
} ) ;
23
38
24
39
describe ( 'parseFrontmatter' , ( ) => {
25
- it ( 'works' , ( ) => {
40
+ it ( 'works for YAML ' , ( ) => {
26
41
const yaml = `\nfoo: bar\n` ;
27
42
assert . deepEqual ( parseFrontmatter ( `---${ yaml } ---` ) , {
28
43
frontmatter : { foo : 'bar' } ,
@@ -81,7 +96,66 @@ describe('parseFrontmatter', () => {
81
96
} ) ;
82
97
} ) ;
83
98
84
- it ( 'frontmatter style' , ( ) => {
99
+ it ( 'works for TOML' , ( ) => {
100
+ const toml = `\nfoo = "bar"\n` ;
101
+ assert . deepEqual ( parseFrontmatter ( `+++${ toml } +++` ) , {
102
+ frontmatter : { foo : 'bar' } ,
103
+ rawFrontmatter : toml ,
104
+ content : '' ,
105
+ } ) ;
106
+ assert . deepEqual ( parseFrontmatter ( `${ bom } +++${ toml } +++` ) , {
107
+ frontmatter : { foo : 'bar' } ,
108
+ rawFrontmatter : toml ,
109
+ content : bom ,
110
+ } ) ;
111
+ assert . deepEqual ( parseFrontmatter ( `\n+++${ toml } +++` ) , {
112
+ frontmatter : { foo : 'bar' } ,
113
+ rawFrontmatter : toml ,
114
+ content : '\n' ,
115
+ } ) ;
116
+ assert . deepEqual ( parseFrontmatter ( `\n \n+++${ toml } +++` ) , {
117
+ frontmatter : { foo : 'bar' } ,
118
+ rawFrontmatter : toml ,
119
+ content : '\n \n' ,
120
+ } ) ;
121
+ assert . deepEqual ( parseFrontmatter ( `+++${ toml } +++\ncontent` ) , {
122
+ frontmatter : { foo : 'bar' } ,
123
+ rawFrontmatter : toml ,
124
+ content : '\ncontent' ,
125
+ } ) ;
126
+ assert . deepEqual ( parseFrontmatter ( `${ bom } +++${ toml } +++\ncontent` ) , {
127
+ frontmatter : { foo : 'bar' } ,
128
+ rawFrontmatter : toml ,
129
+ content : `${ bom } \ncontent` ,
130
+ } ) ;
131
+ assert . deepEqual ( parseFrontmatter ( `\n\n+++${ toml } +++\n\ncontent` ) , {
132
+ frontmatter : { foo : 'bar' } ,
133
+ rawFrontmatter : toml ,
134
+ content : '\n\n\n\ncontent' ,
135
+ } ) ;
136
+ assert . deepEqual ( parseFrontmatter ( `\n \n+++${ toml } +++\n\ncontent` ) , {
137
+ frontmatter : { foo : 'bar' } ,
138
+ rawFrontmatter : toml ,
139
+ content : '\n \n\n\ncontent' ,
140
+ } ) ;
141
+ assert . deepEqual ( parseFrontmatter ( ` +++${ toml } +++` ) , {
142
+ frontmatter : { } ,
143
+ rawFrontmatter : '' ,
144
+ content : ` +++${ toml } +++` ,
145
+ } ) ;
146
+ assert . deepEqual ( parseFrontmatter ( `+++${ toml } +++` ) , {
147
+ frontmatter : { } ,
148
+ rawFrontmatter : '' ,
149
+ content : `+++${ toml } +++` ,
150
+ } ) ;
151
+ assert . deepEqual ( parseFrontmatter ( `text\n+++${ toml } +++\n\ncontent` ) , {
152
+ frontmatter : { } ,
153
+ rawFrontmatter : '' ,
154
+ content : `text\n+++${ toml } +++\n\ncontent` ,
155
+ } ) ;
156
+ } ) ;
157
+
158
+ it ( 'frontmatter style for YAML' , ( ) => {
85
159
const yaml = `\nfoo: bar\n` ;
86
160
const parse1 = ( style ) => parseFrontmatter ( `---${ yaml } ---` , { frontmatter : style } ) . content ;
87
161
assert . deepEqual ( parse1 ( 'preserve' ) , `---${ yaml } ---` ) ;
@@ -96,4 +170,20 @@ describe('parseFrontmatter', () => {
96
170
assert . deepEqual ( parse2 ( 'empty-with-spaces' ) , `\n \n \n \n \n\ncontent` ) ;
97
171
assert . deepEqual ( parse2 ( 'empty-with-lines' ) , `\n \n\n\n\n\ncontent` ) ;
98
172
} ) ;
173
+
174
+ it ( 'frontmatter style for TOML' , ( ) => {
175
+ const toml = `\nfoo = "bar"\n` ;
176
+ const parse1 = ( style ) => parseFrontmatter ( `+++${ toml } +++` , { frontmatter : style } ) . content ;
177
+ assert . deepEqual ( parse1 ( 'preserve' ) , `+++${ toml } +++` ) ;
178
+ assert . deepEqual ( parse1 ( 'remove' ) , '' ) ;
179
+ assert . deepEqual ( parse1 ( 'empty-with-spaces' ) , ` \n \n ` ) ;
180
+ assert . deepEqual ( parse1 ( 'empty-with-lines' ) , `\n\n` ) ;
181
+
182
+ const parse2 = ( style ) =>
183
+ parseFrontmatter ( `\n \n+++${ toml } +++\n\ncontent` , { frontmatter : style } ) . content ;
184
+ assert . deepEqual ( parse2 ( 'preserve' ) , `\n \n+++${ toml } +++\n\ncontent` ) ;
185
+ assert . deepEqual ( parse2 ( 'remove' ) , '\n \n\n\ncontent' ) ;
186
+ assert . deepEqual ( parse2 ( 'empty-with-spaces' ) , `\n \n \n \n \n\ncontent` ) ;
187
+ assert . deepEqual ( parse2 ( 'empty-with-lines' ) , `\n \n\n\n\n\ncontent` ) ;
188
+ } ) ;
99
189
} ) ;
0 commit comments