diff options
author | Albert Krewinkel <albert@zeitkraut.de> | 2018-10-11 22:28:24 +0200 |
---|---|---|
committer | Albert Krewinkel <albert@zeitkraut.de> | 2018-10-11 22:28:24 +0200 |
commit | 5f6f2c69f5b405477e356ceaa64ba3a2d8fc8cbe (patch) | |
tree | cae177ca5316f8706f5b819e672886dfdaf70513 /data | |
parent | 484056a4cd9d243a73cf7cb9b87225814e176d72 (diff) | |
download | pandoc-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.lua | 30 |
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 |