From 96e76d4cd475fe479ae6fb36bd6feee1cc6ff39f Mon Sep 17 00:00:00 2001 From: Albert Krewinkel Date: Mon, 1 Nov 2021 08:14:44 +0100 Subject: Lua: restore List behavior of MetaList Fixes a regression introduced in 2.16 which had MetaList elements loose the `pandoc.List` properties. Fixes #7650 --- data/pandoc.lua | 1 + test/lua/module/pandoc.lua | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/data/pandoc.lua b/data/pandoc.lua index 1f4830858..d4bd955aa 100644 --- a/data/pandoc.lua +++ b/data/pandoc.lua @@ -55,6 +55,7 @@ local function create_accessor_behavior (tag) if k == "t" then return getmetatable(t)["tag"] end + return getmetatable(t)[k] end behavior.__pairs = function (t) return next, t diff --git a/test/lua/module/pandoc.lua b/test/lua/module/pandoc.lua index b18a01faa..4e0b5188e 100644 --- a/test/lua/module/pandoc.lua +++ b/test/lua/module/pandoc.lua @@ -278,6 +278,19 @@ return { end) }, }, + group 'MetaValue elements' { + test('MetaList elements behave like lists', function () + local metalist = pandoc.MetaList{} + assert.are_equal(type(metalist.insert), 'function') + assert.are_equal(type(metalist.remove), 'function') + end), + test('MetaList, MetaMap, MetaInlines, MetaBlocks have `t` tag', function () + assert.are_equal((pandoc.MetaList{}).t, 'MetaList') + assert.are_equal((pandoc.MetaMap{}).t, 'MetaMap') + assert.are_equal((pandoc.MetaInlines{}).t, 'MetaInlines') + assert.are_equal((pandoc.MetaBlocks{}).t, 'MetaBlocks') + end) + }, group 'Other types' { group 'SimpleTable' { test('can access properties', function () -- cgit v1.2.3