1
1
function updateChangelog ( changelog ) {
2
- changelog = addHeader ( changelog ) ;
2
+ changelog = addFrontmatter ( changelog ) ;
3
3
changelog = pushHeadings ( changelog ) ;
4
- changelog = linkUsers ( changelog ) ;
5
- changelog = linkPRs ( changelog ) ;
4
+ changelog = fixUserLinks ( changelog ) ;
5
+ changelog = fixPRLinks ( changelog ) ;
6
+ changelog = escapeMDXCharacters ( changelog ) ;
6
7
return changelog ;
7
8
}
8
9
9
- function addHeader ( changelog , header = 'Changelog' ) {
10
+ function addFrontmatter ( changelog , header = 'Changelog' ) {
10
11
return `---
11
12
title: ${ header }
12
13
sidebar_label: ${ header }
@@ -19,14 +20,22 @@ function pushHeadings(changelog) {
19
20
return changelog . replaceAll ( / \n # [ ^ # ] / g, '\n## ' ) ;
20
21
}
21
22
22
- function linkUsers ( changelog ) {
23
+ function fixUserLinks ( changelog ) {
23
24
return changelog . replaceAll ( / b y @ ( [ a - z A - Z 0 - 9 - ] + ) / g, 'by [@$1](https://github.com/$1)' ) ;
24
25
}
25
26
26
- function linkPRs ( changelog ) {
27
+ function fixPRLinks ( changelog ) {
27
28
return changelog . replaceAll ( / ( ( ( h t t p s ? : \/ \/ ) ? ( w w w .) ? ) ? g i t h u b .c o m \/ [ ^ \s ] * ?\/ p u l l \/ ( [ 0 - 9 ] + ) ) / g, '[#$5]($1)' ) ;
28
29
}
29
30
31
+ function escapeMDXCharacters ( changelog ) {
32
+ return changelog . replaceAll ( / < | > / g, ( match ) => {
33
+ return match === '<' ? '<' : '>' ;
34
+ } ) . replaceAll ( / \{ | \} / g, ( match ) => {
35
+ return match === '{' ? '{' : '}' ;
36
+ } ) ;
37
+ }
38
+
30
39
module . exports = {
31
40
updateChangelog,
32
41
} ;
0 commit comments