m (Let's try this...) |
m (Protected "Module:NIA" ([Edit=Editors and administrators] (indefinite) [Move=Editors and administrators] (indefinite))) |
||
(33 intermediate revisions by 2 users not shown) | |||
Line 9: | Line 9: | ||
end |
end |
||
local text = "" |
local text = "" |
||
− | + | local escaped = string.gsub(args[1], '\\,', '|') |
|
+ | for item in mw.text.gsplit(escaped, '%s*,%s*') do |
||
⚫ | |||
+ | local deescaped = string.gsub(item, '|', ',') |
||
⚫ | |||
end |
end |
||
return text |
return text |
||
Line 16: | Line 18: | ||
function shuffle(list) |
function shuffle(list) |
||
+ | math.randomseed(os.time() + math.random(100)) |
||
local indices = {} |
local indices = {} |
||
for i = 1, #list do |
for i = 1, #list do |
||
Line 36: | Line 39: | ||
else |
else |
||
f = mw.getCurrentFrame() |
f = mw.getCurrentFrame() |
||
+ | end |
||
+ | if args[1] == "" then |
||
+ | return "" |
||
end |
end |
||
section = {} |
section = {} |
||
− | for item in mw.text.gsplit(args[1], "<span class=\"nowrap navbox |
+ | for item in mw.text.gsplit(args[1], "<span class=\"nowrap navbox") do |
+ | if string.find(item, " '''·''' %[%[") then |
||
⚫ | |||
− | + | silly = item |
|
+ | for subitem in mw.text.gsplit(item, " '''·''' %[%[") do |
||
⚫ | |||
+ | if string.find(subitem, "</span>") then |
||
+ | table.insert(section, (subitem:gsub("-item\">", "", 1):gsub("</span>", ""))) |
||
+ | else |
||
+ | if string.find(subitem, "%[%[") then |
||
+ | table.insert(section, (subitem:gsub(" '''·''' ", ""))) |
||
+ | else |
||
+ | table.insert(section, "[[" .. subitem:gsub(" '''·''' ", "")) |
||
+ | end |
||
+ | end |
||
+ | end |
||
+ | else |
||
⚫ | |||
+ | if item ~= "" then |
||
⚫ | |||
+ | end |
||
end |
end |
||
end |
end |
||
− | return table.concat(shuffle(section), " |
+ | return table.concat(shuffle(section), " '''·''' ") |
end |
end |
||
Latest revision as of 03:17, 24 August 2020
Documentation for this module may be created at Module:NIA/doc
local p = {}
p.items = function( f )
local args = f.args or f
if f == mw.getCurrentFrame() and args[1] == nil then
args = f:getParent().args
else
f = mw.getCurrentFrame()
end
local text = ""
local escaped = string.gsub(args[1], '\\,', '|')
for item in mw.text.gsplit(escaped, '%s*,%s*') do
local deescaped = string.gsub(item, '|', ',')
text = text .. f:callParserFunction('#icon', {"", item = deescaped, size = 16, mod = args.mod})
end
return text
end
function shuffle(list)
math.randomseed(os.time() + math.random(100))
local indices = {}
for i = 1, #list do
indices[#indices+1] = i
end
local shuffled = {}
for i = 1, #list do
local index = math.random(#indices)
local value = list[indices[index]]
table.remove(indices, index)
shuffled[#shuffled+1] = value
end
return shuffled
end
p.rand = function(f)
local args = f.args or f
if f == mw.getCurrentFrame() and args[1] == nil then
args = f:getParent().args
else
f = mw.getCurrentFrame()
end
if args[1] == "" then
return ""
end
section = {}
for item in mw.text.gsplit(args[1], "<span class=\"nowrap navbox") do
if string.find(item, " '''·''' %[%[") then
silly = item
for subitem in mw.text.gsplit(item, " '''·''' %[%[") do
if string.find(subitem, "</span>") then
table.insert(section, (subitem:gsub("-item\">", "", 1):gsub("</span>", "")))
else
if string.find(subitem, "%[%[") then
table.insert(section, (subitem:gsub(" '''·''' ", "")))
else
table.insert(section, "[[" .. subitem:gsub(" '''·''' ", ""))
end
end
end
else
item = item:gsub("-item\">", "", 1):gsub(" '''·''' ", "")
if item ~= "" then
table.insert(section, "<span class=\"nowrap navbox-item\">" .. item)
end
end
end
return table.concat(shuffle(section), " '''·''' ")
end
return p