2,580
ページ

このモジュールについての説明文ページを モジュール:GatheringEfficiency/doc に作成できます

```local p = {}
function p.GatheringEfficiency( f )
local args = f:getParent().args
local rows, num, rating =  {}, 0, ''

for item,eff in spairs(args) do
if item ~= 'note' and string.match(item, '_auto\$') == nil then
rating = 'data-sort-value="0" | ?'
if tonumber(eff) ~= nil then
num = tonumber(eff)
if num > 0 and num < 6 then
rating = 'data-sort-value="'..num..'" | '..string.rep('★',num)..string.rep('☆',5-num)
end
end
if args[item..'_auto'] ~= nil and string.lower(args[item..'_auto']) == 'yes' then
rating = rating..'<br><small><i>自主的に収集します</i></small>[[カテゴリ:自主的に収集する生物]]'
end
end
end
local noteRow = ''
if args.note ~= nil and string.len(args.note) > 0 then
noteRow = '\n|-\n! colspan="2" align="left" style="font-weight:normal;font-size:0.8em" | <i>'..args.note..'</i>'
end
return '{| class="wikitable sortable" cellspacing="0"\n|-\n! 資源\n! 効率\n'..table.concat(rows,'\n')..noteRow..'\n|}'
end

function spairs(t)
-- collect the keys
local keys = {}
for k in pairs(t) do keys[#keys+1] = k end

-- if order function given, sort by it by passing the table and keys a, b,
table.sort(keys, function(a,b) return (tonumber(t[a]) ~= nil and (tonumber(t[b]) == nil or t[b] < t[a])) end)

-- return the iterator function
local i = 0
return function()
i = i + 1
if keys[i] then
return keys[i], t[keys[i]]
end
end
end

return p
```