Skip to content

Commit

Permalink
Merge pull request #18 from johansatge/fix-issue-3
Browse files Browse the repository at this point in the history
Escape special chars
  • Loading branch information
johansatge committed Nov 2, 2023
2 parents f59dcfe + bfdc8a3 commit be585be
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 26 deletions.
15 changes: 10 additions & 5 deletions main.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,9 +122,7 @@ function getMarkdownNestedListFromHeadings(headings, options) {
const minLevel = Math.min(...headings.map((heading) => heading.level))
headings.forEach((heading) => {
if (options.maxLevel > 0 && heading.level > options.maxLevel) return
const label = heading.display || heading.heading
const text = options.includeLinks ? `[[#${heading.heading}|${label}]]` : heading.heading
lines.push(`${'\t'.repeat(heading.level - minLevel)}- ${text}`)
lines.push(`${'\t'.repeat(heading.level - minLevel)}- ${getMarkdownHeading(heading, options)}`)
})
return lines.length > 0 ? lines.join('\n') : null
}
Expand All @@ -133,12 +131,19 @@ function getMarkdownInlineFirstLevelFromHeadings(headings, options) {
const items = headings
.filter((heading) => heading.level === 1)
.map((heading) => {
const label = heading.display || heading.heading
return options.includeLinks ? `[[#${heading.heading}|${label}]]` : heading.heading
return getMarkdownHeading(heading, options)
})
return items.length > 0 ? items.join(' | ') : null
}

function getMarkdownHeading(heading, options) {
if (options.includeLinks) {
const cleaned = heading.heading.replaceAll('|', '-').replaceAll('[', '{').replaceAll(']', '}')
return `[[#${cleaned}]]`
}
return heading.heading
}

function parseOptionsFromSourceText(sourceText = '') {
const options = {}
Object.keys(availableOptions).forEach((option) => {
Expand Down
42 changes: 21 additions & 21 deletions test/headings.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ const {
} = require('../main.js')

const testStandardHeadings = [
{ heading: 'Title 1 level 1', level: 1 },
{ heading: 'Title [1] | level 1', level: 1 },
{ heading: 'Title 1 level 2', level: 2 },
{ heading: 'Title 1 level 3', level: 3 },
{ heading: 'Title 2 level 1', level: 1 },
Expand All @@ -26,12 +26,12 @@ describe('Headings', () => {
const options = parseOptionsFromSourceText('')
const md = getMarkdownFromHeadings(testStandardHeadings, options)
const expectedMd = sanitizeMd(`
- [[#Title 1 level 1|Title 1 level 1]]
- [[#Title 1 level 2|Title 1 level 2]]
- [[#Title 1 level 3|Title 1 level 3]]
- [[#Title 2 level 1|Title 2 level 1]]
- [[#Title 3 level 1|Title 3 level 1]]
- [[#Title 3 level 2|Title 3 level 2]]
- [[#Title {1} - level 1]]
- [[#Title 1 level 2]]
- [[#Title 1 level 3]]
- [[#Title 2 level 1]]
- [[#Title 3 level 1]]
- [[#Title 3 level 2]]
`)
expect(md).toEqual(expectedMd)
})
Expand All @@ -40,12 +40,12 @@ describe('Headings', () => {
const options = parseOptionsFromSourceText('')
const md = getMarkdownFromHeadings(testHeadingsWithoutFirstLevel, options)
const expectedMd = sanitizeMd(`
- [[#Title 1 level 2|Title 1 level 2]]
- [[#Title 1 level 3|Title 1 level 3]]
- [[#Title 1 level 4|Title 1 level 4]]
- [[#Title 2 level 2|Title 2 level 2]]
- [[#Title 3 level 2|Title 3 level 2]]
- [[#Title 3 level 3|Title 3 level 3]]
- [[#Title 1 level 2]]
- [[#Title 1 level 3]]
- [[#Title 1 level 4]]
- [[#Title 2 level 2]]
- [[#Title 3 level 2]]
- [[#Title 3 level 3]]
`)
expect(md).toEqual(expectedMd)
})
Expand All @@ -55,11 +55,11 @@ describe('Headings', () => {
options.maxLevel = 2
const md = getMarkdownFromHeadings(testStandardHeadings, options)
const expectedMd = sanitizeMd(`
- [[#Title 1 level 1|Title 1 level 1]]
- [[#Title 1 level 2|Title 1 level 2]]
- [[#Title 2 level 1|Title 2 level 1]]
- [[#Title 3 level 1|Title 3 level 1]]
- [[#Title 3 level 2|Title 3 level 2]]
- [[#Title {1} - level 1]]
- [[#Title 1 level 2]]
- [[#Title 2 level 1]]
- [[#Title 3 level 1]]
- [[#Title 3 level 2]]
`)
expect(md).toEqual(expectedMd)
})
Expand All @@ -69,7 +69,7 @@ describe('Headings', () => {
options.includeLinks = false
const md = getMarkdownFromHeadings(testStandardHeadings, options)
const expectedMd = sanitizeMd(`
- Title 1 level 1
- Title [1] | level 1
- Title 1 level 2
- Title 1 level 3
- Title 2 level 1
Expand All @@ -84,7 +84,7 @@ describe('Headings', () => {
options.style = 'inlineFirstLevel'
const md = getMarkdownFromHeadings(testStandardHeadings, options)
const expectedMd = sanitizeMd(`
[[#Title 1 level 1|Title 1 level 1]] | [[#Title 2 level 1|Title 2 level 1]] | [[#Title 3 level 1|Title 3 level 1]]
[[#Title {1} - level 1]] | [[#Title 2 level 1]] | [[#Title 3 level 1]]
`)
expect(md).toEqual(expectedMd)
})
Expand All @@ -95,7 +95,7 @@ describe('Headings', () => {
options.includeLinks = false
const md = getMarkdownFromHeadings(testStandardHeadings, options)
const expectedMd = sanitizeMd(`
Title 1 level 1 | Title 2 level 1 | Title 3 level 1
Title [1] | level 1 | Title 2 level 1 | Title 3 level 1
`)
expect(md).toEqual(expectedMd)
})
Expand Down

0 comments on commit be585be

Please sign in to comment.