aboutsummaryrefslogtreecommitdiff
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
parent484056a4cd9d243a73cf7cb9b87225814e176d72 (diff)
downloadpandoc-5f6f2c69f5b405477e356ceaa64ba3a2d8fc8cbe.tar.gz
data/pandoc.lua: add datatype ListAttributes
Make ListAttributes a datatype. The type is similar to Attr.
-rw-r--r--data/pandoc.lua30
-rw-r--r--doc/lua-filters.md17
2 files changed, 46 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
diff --git a/doc/lua-filters.md b/doc/lua-filters.md
index 917b9cc16..ecc63a4c4 100644
--- a/doc/lua-filters.md
+++ b/doc/lua-filters.md
@@ -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}