匿名利用者
モジュール:List (Ipemoto a=nukar)
2023 ppm 11 2023-11-20T13:23:57+00:00up 20 302023 (Kun.) 13:23時点におけるwerson
、 2023 ppm 11 2023-11-20T13:23:57+00:00up 20 302023 (Kun.)start引数が機能していないため修正
(回退到由Xiplus-abot(讨论)做出的修订版本61203267:回退导入版本) |
(start引数が機能していないため修正) |
||
| 1行目: | 1行目: | ||
local libUtil = require('libraryUtil') | local libUtil = require('libraryUtil') | ||
local checkType = libUtil.checkType | local checkType = libUtil.checkType | ||
| 20行目: | 17行目: | ||
local data = {} | local data = {} | ||
-- Classes | -- Classes and TemplateStyles | ||
data.classes = {} | data.classes = {} | ||
data.templatestyles = '' | |||
if listType == 'horizontal' or listType == 'horizontal_ordered' then | if listType == 'horizontal' or listType == 'horizontal_ordered' then | ||
table.insert(data.classes, 'hlist') | table.insert(data.classes, 'hlist') | ||
data.templatestyles = mw.getCurrentFrame():extensionTag{ | |||
name = 'templatestyles', args = { src = 'Hlist/styles.css' } | |||
} | |||
elseif listType == 'unbulleted' then | elseif listType == 'unbulleted' then | ||
table.insert(data.classes, 'plainlist') | table.insert(data.classes, 'plainlist') | ||
data.templatestyles = mw.getCurrentFrame():extensionTag{ | |||
name = 'templatestyles', args = { src = 'Plainlist/styles.css' } | |||
} | |||
end | end | ||
table.insert(data.classes, args.class) | table.insert(data.classes, args.class) | ||
| 73行目: | 77行目: | ||
local startNum = tonumber(data.start) | local startNum = tonumber(data.start) | ||
if startNum then | if startNum then | ||
data.counterReset = 'listitem ' .. tostring(startNum - 1 | data.counterReset = 'listitem ' .. tostring(startNum) | ||
data.counterIncrement = 'listitem -1' | |||
end | end | ||
end | end | ||
| 87行目: | 92行目: | ||
data.itemStyle = args.item_style or args.li_style | data.itemStyle = args.item_style or args.li_style | ||
data.items = {} | data.items = {} | ||
for | for _, num in ipairs(mTableTools.numKeys(args)) do | ||
local item = {} | local item = {} | ||
item.content = args[num] | item.content = args[num] | ||
item.style = args['item' .. tostring(num) .. '_style'] | item.style = args['item' .. tostring(num) .. '_style'] | ||
or args['item_style' .. tostring(num)] | or args['item_style' .. tostring(num)] | ||
item.value = args['item' .. tostring(num) .. '_value'] | item.value = args['item' .. tostring(num) .. '_value'] | ||
or args['item_value' .. tostring(num)] | or args['item_value' .. tostring(num)] | ||
if item.value ~= nil then | |||
item.style = 'counter-reset: listitem ' .. item.value .. ';counter-increment: none;' .. ((item.style) or '') | |||
end | |||
table.insert(data.items, item) | table.insert(data.items, item) | ||
end | end | ||
| 112行目: | 118行目: | ||
-- Render the main div tag. | -- Render the main div tag. | ||
local root = mw.html.create('div') | local root = mw.html.create('div') | ||
for | for _, class in ipairs(data.classes or {}) do | ||
root:addClass(class) | root:addClass(class) | ||
end | end | ||
| 126行目: | 132行目: | ||
:css{ | :css{ | ||
['counter-reset'] = data.counterReset, | ['counter-reset'] = data.counterReset, | ||
['counter-increment'] = data.counterIncrement, | |||
['list-style-type'] = data.listStyleType | ['list-style-type'] = data.listStyleType | ||
} | } | ||
| 133行目: | 140行目: | ||
-- Render the list items | -- Render the list items | ||
for | for _, t in ipairs(data.items or {}) do | ||
local item = list:tag('li') | local item = list:tag('li') | ||
if data.itemStyle then | if data.itemStyle then | ||
| 146行目: | 153行目: | ||
end | end | ||
return tostring(root) | return data.templatestyles .. tostring(root) | ||
end | end | ||
| 160行目: | 167行目: | ||
local ret = '' | local ret = '' | ||
if isDeprecated then | if isDeprecated then | ||
ret = ret .. '[[Category: | ret = ret .. '[[Category:List templates with deprecated parameters]]' | ||
end | end | ||
return ret | return ret | ||
| 168行目: | 175行目: | ||
if not listType or not listTypes[listType] then | if not listType or not listTypes[listType] then | ||
error(string.format( | error(string.format( | ||
"bad argument #1 to 'makeList' ('%s' | "bad argument #1 to 'makeList' ('%s' is not a valid list type)", | ||
tostring(listType) | tostring(listType) | ||
), 2) | ), 2) | ||
| 182行目: | 189行目: | ||
p[listType] = function (frame) | p[listType] = function (frame) | ||
local mArguments = require('Module:Arguments') | local mArguments = require('Module:Arguments') | ||
local origArgs = mArguments.getArgs(frame) | local origArgs = mArguments.getArgs(frame, { | ||
valueFunc = function (key, value) | |||
if not value or not mw.ustring.find(value, '%S') then return nil end | |||
if mw.ustring.find(value, '^%s*[%*#;:]') then | |||
return value | |||
else | |||
return value:match('^%s*(.-)%s*$') | |||
end | |||
return nil | |||
end | |||
}) | |||
-- Copy all the arguments to a new table, for faster indexing. | -- Copy all the arguments to a new table, for faster indexing. | ||
local args = {} | local args = {} | ||