aboutsummaryrefslogtreecommitdiff
path: root/pandoc-lua-engine/test
diff options
context:
space:
mode:
authorAlbert Krewinkel <[email protected]>2022-10-05 12:37:30 +0200
committerJohn MacFarlane <[email protected]>2022-12-16 10:43:01 -0800
commita36f12119fe1a0b70a1a3ff65264e94373a490ce (patch)
tree224f9932bf6e1c120db568a6a111f69a9146317a /pandoc-lua-engine/test
parentdb0232fc545913a9ea6e81d84fc5ee4d9cc8a185 (diff)
Lua: allow table structure as format spec.
This allows to pass structured values as format specifiers to `pandoc.write` and `pandoc.read`.
Diffstat (limited to 'pandoc-lua-engine/test')
-rw-r--r--pandoc-lua-engine/test/lua/module/pandoc.lua69
1 files changed, 68 insertions, 1 deletions
diff --git a/pandoc-lua-engine/test/lua/module/pandoc.lua b/pandoc-lua-engine/test/lua/module/pandoc.lua
index d61bcf3b0..bb02f172b 100644
--- a/pandoc-lua-engine/test/lua/module/pandoc.lua
+++ b/pandoc-lua-engine/test/lua/module/pandoc.lua
@@ -292,7 +292,33 @@ return {
function () pandoc.read('foo', 'nosuchreader') end,
'Unknown input format nosuchreader'
)
- end)
+ end),
+ group 'extensions' {
+ test('string spec', function ()
+ local doc = pandoc.read('"vice versa"', 'markdown-smart')
+ assert.are_equal(doc, pandoc.Pandoc{pandoc.Para '"vice versa"'})
+ end),
+ test('unsupported extension', function ()
+ assert.error_matches(
+ function () pandoc.read('foo', 'gfm+empty_paragraphs') end,
+ 'The extension empty_paragraphs is not supported for gfm'
+ )
+ end),
+ test('unknown extension', function ()
+ local format_spec = { format = 'markdown', extensions = {'nope'}}
+ assert.error_matches(
+ function () pandoc.read('x', format_spec) end,
+ 'The extension nope is not supported for markdown'
+ )
+ end),
+ test('fails on invalid extension', function ()
+ local format_spec = { format = 'markdown', extensions = {'nope'}}
+ assert.error_matches(
+ function () pandoc.read('nu-uh', format_spec) end,
+ 'The extension nope is not supported for markdown'
+ )
+ end),
+ },
},
group 'walk_block' {
@@ -333,6 +359,47 @@ return {
end)
},
+ group 'write' {
+ test('string spec', function ()
+ local doc = pandoc.Pandoc{pandoc.Quoted('DoubleQuote', 'vice versa')}
+ local plain = pandoc.write(doc, 'plain+smart')
+ assert.are_equal(plain, '"vice versa"\n')
+ end),
+ test('table format spec with extensions list', function ()
+ local doc = pandoc.Pandoc{pandoc.Quoted('DoubleQuote', 'vice versa')}
+ local format_spec = { format = 'plain', extensions = {'smart'}}
+ local plain = pandoc.write(doc, format_spec)
+ assert.are_equal(plain, '"vice versa"\n')
+ end),
+ test('table format spec with `enable`/`disable` diff', function ()
+ local diff = {
+ enable = {'smart'}
+ }
+ local doc = pandoc.Pandoc{pandoc.Quoted('DoubleQuote', 'vice versa')}
+ local format_spec = { format = 'plain', extensions = diff}
+ local plain = pandoc.write(doc, format_spec)
+ assert.are_equal(plain, '"vice versa"\n')
+ end),
+ test('table format spec with set-like diff', function ()
+ local diff = {
+ smart = true,
+ auto_identifiers = false
+ }
+ local doc = pandoc.Pandoc{pandoc.Quoted('DoubleQuote', 'vice versa')}
+ local format_spec = { format = 'plain', extensions = diff}
+ local plain = pandoc.write(doc, format_spec)
+ assert.are_equal(plain, '"vice versa"\n')
+ end),
+ test('fails on invalid extension', function ()
+ local doc = pandoc.Pandoc{'nope'}
+ local format_spec = { format = 'plain', extensions = {'nope'}}
+ assert.error_matches(
+ function () pandoc.write(doc, format_spec) end,
+ 'The extension nope is not supported for plain'
+ )
+ end),
+ },
+
group 'Marshal' {
group 'Inlines' {
test('Strings are broken into words', function ()