aboutsummaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authorAlbert Krewinkel <albert@zeitkraut.de>2018-10-11 22:28:24 +0200
committerAlbert Krewinkel <albert@zeitkraut.de>2018-10-11 22:28:24 +0200
commit5f6f2c69f5b405477e356ceaa64ba3a2d8fc8cbe (patch)
treecae177ca5316f8706f5b819e672886dfdaf70513 /data
parent484056a4cd9d243a73cf7cb9b87225814e176d72 (diff)
downloadpandoc-5f6f2c69f5b405477e356ceaa64ba3a2d8fc8cbe.tar.gz
data/pandoc.lua: add datatype ListAttributes
Make ListAttributes a datatype. The type is similar to Attr.
Diffstat (limited to 'data')
-rw-r--r--data/pandoc.lua30
1 files changed, 29 insertions, 1 deletions
diff --git a/data/pandoc.lua b/data/pandoc.lua
index 54370bd1b..1e2d2a061 100644
--- a/data/pandoc.lua
+++ b/data/pandoc.lua
@@ -403,7 +403,7 @@ M.Null = M.Block:create_constructor(
M.OrderedList = M.Block:create_constructor(
"OrderedList",
function(items, listAttributes)
- listAttributes = listAttributes or {1, M.DefaultStyle, M.DefaultDelim}
+ listAttributes = listAttributes or M.ListAttributes()
return {c = {listAttributes, ensureList(items)}}
end,
{{listAttributes = {"start", "style", "delimiter"}}, "content"}
@@ -857,6 +857,34 @@ function M.Citation:new (id, mode, prefix, suffix, note_num, hash)
}
end
+-- ListAttributes
+M.ListAttributes = AstElement:make_subtype 'ListAttributes'
+
+--- Creates a set of list attributes.
+-- @function ListAttributes
+-- @tparam[opt] integer start number of the first list item
+-- @tparam[opt] string style style used for list numbering
+-- @tparam[opt] DefaultDelim|Period|OneParen|TwoParens delimiter delimiter of list numbers
+-- @treturn table list attributes table
+function M.ListAttributes:new (start, style, delimiter)
+ start = start or 1
+ style = style or 'DefaultStyle'
+ delimiter = delimiter or 'DefaultDelim'
+ return {start, style, delimiter}
+end
+M.ListAttributes.behavior._field_names = {start = 1, style = 2, delimiter = 3}
+M.ListAttributes.behavior.__index = function (t, k)
+ return rawget(t, getmetatable(t)._field_names[k]) or
+ getmetatable(t)[k]
+end
+M.ListAttributes.behavior.__newindex = function (t, k, v)
+ if getmetatable(t)._field_names[k] then
+ rawset(t, getmetatable(t)._field_names[k], v)
+ else
+ rawset(t, k, v)
+ end
+end
+
------------------------------------------------------------------------
-- Constants