diff --git a/package.json b/package.json index 17a87a9ca..0cf6fe773 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "test:mustache-syntax:inline": "jest '.*(mustache-syntax).*' -t '^Inline:.*' --verbose --noStackTrace", "test:mustache-syntax:block": "jest '.*(mustache-syntax).*' -t '^Block:.*' --verbose --noStackTrace", "test:mustache-syntax:injection": "jest '.*(mustache-syntax).*' -t '^Injection:.*' --verbose --noStackTrace", - "test:marked-extensions": "jest '.*(marked-extensions).*' --verbose --noStackTrace", + "test:marked-extensions": "jest tests/markdown/marked-extensions.test.js --verbose --noStackTrace", "test:route": "jest tests/routes/static-pages.test.js --verbose", "phb": "node scripts/phb.js", "prod": "set NODE_ENV=production && npm run build", diff --git a/shared/naturalcrit/markdown.js b/shared/naturalcrit/markdown.js index 6c9cdc5cb..4bc14e19a 100644 --- a/shared/naturalcrit/markdown.js +++ b/shared/naturalcrit/markdown.js @@ -401,12 +401,12 @@ const definitionLists = { } }, renderer(token) { - let returnVal = ``; + let returnVal = `
`; token.definitions.forEach((def)=>{ let dds = def.ddo.map((s)=>{ - return `
${this.parser.parseInline(s).trim()}
`; - }).join('\n'); - returnVal += `
${this.parser.parseInline(def.dt)}
${dds.indexOf('\n') > -1 ? '\n' : ''}${dds}\n`; + return `${token.inlineDefinitions ? '' : '\n'}
${this.parser.parseInline(s).trim()}
`; + }).join(''); + returnVal += `
${this.parser.parseInline(def.dt)}
${dds}\n`; }); returnVal = returnVal.trim(); return `${returnVal}
`; diff --git a/tests/markdown/marked-extensions.test.js b/tests/markdown/marked-extensions.test.js index 5a8603ab8..b4e5dee5c 100644 --- a/tests/markdown/marked-extensions.test.js +++ b/tests/markdown/marked-extensions.test.js @@ -2,55 +2,60 @@ const Markdown = require('naturalcrit/markdown.js'); -describe('Dictionary Terms', ()=>{ - test('Single Definition', function() { +describe('Inline Definition Lists', ()=>{ + test('Single Definition Term', function() { const source = 'My term :: My First Definition\n\n'; const rendered = Markdown.render(source); - expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('
My term
My First Definition
'); + expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('
My term
My First Definition
'); }); - test('Multiple Definition Terms, single line, single definition', function() { + test('Multiple Definition Terms', function() { const source = 'Term 1::Definition of Term 1\nTerm 2::Definition of Term 2\n\n'; const rendered = Markdown.render(source); - expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('
Term 1
Definition of Term 1
\n
Term 2
Definition of Term 2
'); + expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('
Term 1
Definition of Term 1
\n
Term 2
Definition of Term 2
'); }); +}); - test('PANdoc style list - Single Term, Single Definition', function() { +describe('Multiline Definition Lists', ()=>{ + test('Single Term, Single Definition', function() { const source = 'Term 1\n::Definition 1\n\n'; const rendered = Markdown.render(source); - expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('
Term 1
Definition 1
'); + expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('
Term 1
\n
Definition 1
'); }); - test('PANdoc style list - Single Term, Plural Definitions', function() { + test('Single Term, Plural Definitions', function() { const source = 'Term 1\n::Definition 1\n::Definition 2\n\n'; const rendered = Markdown.render(source); expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('
Term 1
\n
Definition 1
\n
Definition 2
'); }); - test('PANdoc style list - Multiple Term, Single Definitions', function() { - const source = 'Term 1\n::Definition 1\nTerm 2\n::Definition 1\n\n'; + test('Multiple Term, Single Definitions', function() { + const source = 'Term 1\n::Definition 1\n\nTerm 2\n::Definition 1\n\n'; const rendered = Markdown.render(source); - expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('
Term 1
Definition 1
\n
Term 2
Definition 1
'); + expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('
Term 1
\n
Definition 1
\n
Term 2
\n
Definition 1
'); }); - test('PANdoc style list - Multiple Term, Plural Definitions', function() { - const source = 'Term 1\n::Definition 1\n::Definition 2\nTerm 2\n::Definition 1\n::Definition 2\n\n'; + test('Multiple Term, Plural Definitions', function() { + const source = 'Term 1\n::Definition 1\n::Definition 2\n\nTerm 2\n::Definition 1\n::Definition 2\n\n'; const rendered = Markdown.render(source); expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('
Term 1
\n
Definition 1
\n
Definition 2
\n
Term 2
\n
Definition 1
\n
Definition 2
'); }); - test('PANdoc style list - Single Term, Single multiple line definition', function() { + test('Single Term, Single multi-line definition', function() { const source = 'Term 1\n::Definition 1\nand more and\nmore and more\n\n'; const rendered = Markdown.render(source); - expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('
Term 1
Definition 1 and more and more and more
'); - + expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('
Term 1
\n
Definition 1 and more and more and more
'); }); - test('PANdoc style list - Multiple Term, Single multiple line definition', function() { - const source = 'Term 1\n::Definition 1\nand more and\nmore and more\n\n::Definition 2\n\n::Definition 3\n\n'; + test('Single Term, Plural multi-line definitions', function() { + const source = 'Term 1\n::Definition 1\nand more and more\n::Definition 2\n\n::Definition 3\n\n'; const rendered = Markdown.render(source); - expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('
Term 1
\n
Definition 1 and more and more and more
\n
Definition 2
\n
Definition 3
'); - + expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('
Term 1
\n
Definition 1 and more and more
\n
Definition 2
\n
Definition 3
'); }); + test('Multiple Term, Single multi-line definition', function() { + const source = 'Term 1\n::Definition 1\nand more and more\n\nTerm 2\n::Definition 1\n\n::Definition 2\n\n'; + const rendered = Markdown.render(source); + expect(rendered, `Input:\n${source}`, { showPrefix: false }).toBe('
Term 1
\n
Definition 1 and more and more
\n
Term 2
\n
Definition 1
\n
Definition 2
'); + }); }); diff --git a/themes/V3/5ePHB/style.less b/themes/V3/5ePHB/style.less index 50cb5c977..ed3e8604c 100644 --- a/themes/V3/5ePHB/style.less +++ b/themes/V3/5ePHB/style.less @@ -319,30 +319,6 @@ padding : 0px; margin-bottom : 0.325cm; - dl { - padding: 0px; - } - - dt::before { - display: block; - } - - dt:nth-child(1n+2)::before { - content: ""; - display: block; - } - - dt { - display: inline; - margin-right : 5px; - margin-left : 0em; - padding: 0px; - } - - dd { - display: inline; - } - //Headers h2 { margin : 0; @@ -886,36 +862,14 @@ dl { line-height : 1.25em; & + * { margin-top : 0.17cm; } - white-space: normal !important; - } - - dd { - display: block - } - p + dl { margin-top : 0.17cm; } - - dt { - display : inline; + dt { margin-right : 5px; margin-left : -1em; } } -// ***************************** -// * Inline Definition Lists -// *****************************/ -.inlineDL dd { - display: inline !important - } - - .inlineDL dd:after{ - display: block; - content: ''; - } - - // ***************************** // * WIDE // *****************************/