Skip to content

Commit df2c0e2

Browse files
authored
Merge pull request #1272 from hackmdio/bugfix/support-empty-spoiler
Support empty spoiler container syntax
2 parents 8452da1 + 1a85523 commit df2c0e2

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

public/js/extra.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1030,14 +1030,19 @@ md.use(markdownitContainer, 'warning', { render: renderContainer })
10301030
md.use(markdownitContainer, 'danger', { render: renderContainer })
10311031
md.use(markdownitContainer, 'spoiler', {
10321032
validate: function (params) {
1033-
return params.trim().match(/^spoiler\s+(.*)$/)
1033+
return params.trim().match(/^spoiler(\s+.*)?$/)
10341034
},
10351035
render: function (tokens, idx) {
1036-
var m = tokens[idx].info.trim().match(/^spoiler\s+(.*)$/)
1036+
const m = tokens[idx].info.trim().match(/^spoiler(\s+.*)?$/)
10371037

10381038
if (tokens[idx].nesting === 1) {
10391039
// opening tag
1040-
return '<details><summary>' + md.utils.escapeHtml(m[1]) + '</summary>\n'
1040+
const summary = m[1] && m[1].trim()
1041+
if (summary) {
1042+
return `<details><summary>${md.utils.escapeHtml(summary)}</summary>\n`
1043+
} else {
1044+
return `<details>\n`
1045+
}
10411046
} else {
10421047
// closing tag
10431048
return '</details>\n'

public/js/lib/syncscroll.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,17 +112,23 @@ md.use(markdownitContainer, 'warning', { render: renderContainer })
112112
md.use(markdownitContainer, 'danger', { render: renderContainer })
113113
md.use(markdownitContainer, 'spoiler', {
114114
validate: function (params) {
115-
return params.trim().match(/^spoiler\s+(.*)$/)
115+
return params.trim().match(/^spoiler(\s+.*)?$/)
116116
},
117117
render: function (tokens, idx) {
118-
var m = tokens[idx].info.trim().match(/^spoiler\s+(.*)$/)
118+
const m = tokens[idx].info.trim().match(/^spoiler(\s+.*)?$/)
119119

120120
if (tokens[idx].nesting === 1) {
121+
// opening tag
121122
const startline = tokens[idx].map[0] + 1
122123
const endline = tokens[idx].map[1]
123124

124-
// opening tag
125-
return `<details class="part raw" data-startline="${startline}" data-endline="${endline}"><summary>` + md.utils.escapeHtml(m[1]) + '</summary>\n'
125+
const partClass = `class="part raw" data-startline="${startline}" data-endline="${endline}"`
126+
const summary = m[1] && m[1].trim()
127+
if (summary) {
128+
return `<details ${partClass}><summary>${md.utils.escapeHtml(summary)}</summary>\n`
129+
} else {
130+
return `<details ${partClass}>\n`
131+
}
126132
} else {
127133
// closing tag
128134
return '</details>\n'

0 commit comments

Comments
 (0)