data/pandoc.lua: add datatype ListAttributes

Make ListAttributes a datatype. The type is similar to Attr.
This commit is contained in:
Albert Krewinkel 2018-10-11 22:28:24 +02:00
parent 484056a4cd
commit 5f6f2c69f5
No known key found for this signature in database
GPG key ID: 388DC0B21F631124
2 changed files with 46 additions and 1 deletions

View file

@ -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

View file

@ -1253,6 +1253,23 @@ Lua functions for pandoc scripts.
`hash`:
: hash number
[`ListAttributes ([start[, style[, delimiter]]])`](#ListAttributes)
: Creates a set of list attributes
Parameters:
`start`:
: number of the first list item (default: 1)
`style`:
: style used for list numbering (default: `DefaultStyle`)
`delimiter`:
: delimiter of list numbers (default: `DefaultDelim`)
Returns: list attributes table
## Constants
[`AuthorInText`]{#AuthorInText}