| Line 1: |
Line 1: |
| | local p = {} | | local p = {} |
| | | | |
| − | function p.fetch(frame) | + | function p._fetch(args) |
| | local template = nil | | local template = nil |
| | local return_value = nil | | local return_value = nil |
| | | | |
| − | -- Use demo parameter if it exists, otherswise use current template name | + | -- Use demo parameter if it exists, otherwise use current template name |
| | local namespace = mw.title.getCurrentTitle().namespace | | local namespace = mw.title.getCurrentTitle().namespace |
| − | if frame.args["demo"] and frame.args["demo"] ~= "" then | + | if args["demo"] and args["demo"] ~= "" then |
| − | template = mw.ustring.gsub(frame.args["demo"],"^[Tt]emplate:","") | + | template = mw.ustring.gsub(args["demo"],"^[Tt]emplate:","") |
| | elseif namespace == 10 then -- Template namespace | | elseif namespace == 10 then -- Template namespace |
| | template = mw.title.getCurrentTitle().text | | template = mw.title.getCurrentTitle().text |
| Line 22: |
Line 22: |
| | template = mw.ustring.gsub(template, "/sandbox$", "") -- strip /sandbox from end | | template = mw.ustring.gsub(template, "/sandbox$", "") -- strip /sandbox from end |
| | local index = mw.ustring.sub(mw.title.new(template).text,1,1) | | local index = mw.ustring.sub(mw.title.new(template).text,1,1) |
| − | local status, data = pcall(function () | + | local status, data = pcall(function () |
| − | return(mw.loadData('Module:Transclusion_count/data/' .. (mw.ustring.find(index, "%a") and index or "other"))) | + | return(mw.loadData('Module:Transclusion_count/data/' .. (mw.ustring.find(index, "%a") and index or "other"))) |
| | end) | | end) |
| | if status then | | if status then |
| Line 32: |
Line 32: |
| | | | |
| | -- If database value doesn't exist, use value passed to template | | -- If database value doesn't exist, use value passed to template |
| − | if return_value == nil and frame.args[1] ~= nil then | + | if return_value == nil and args[1] ~= nil then |
| − | local arg1=mw.ustring.match(frame.args[1], '[%d,]+') | + | local arg1=mw.ustring.match(args[1], '[%d,]+') |
| | if arg1 and arg1 ~= '' then | | if arg1 and arg1 ~= '' then |
| − | return_value = tonumber(frame:callParserFunction('formatnum', arg1, 'R')) | + | return_value = tonumber(mw.getCurrentFrame():callParserFunction('formatnum', arg1, 'R')) |
| | end | | end |
| | end | | end |
| | | | |
| | return return_value | | return return_value |
| | + | end |
| | + | |
| | + | function p.fetch(frame) |
| | + | return p._fetch(frame.args) |
| | end | | end |
| | | | |
| | -- Tabulate this data for [[Wikipedia:Database reports/Templates transcluded on the most pages]] | | -- Tabulate this data for [[Wikipedia:Database reports/Templates transcluded on the most pages]] |
| − | function p.tabulate(frame) | + | function p.tabulate() |
| | local list = {} | | local list = {} |
| | for i = 65, 91 do | | for i = 65, 91 do |
| | local data = mw.loadData('Module:Transclusion count/data/' .. ((i == 91) and 'other' or string.char(i))) | | local data = mw.loadData('Module:Transclusion count/data/' .. ((i == 91) and 'other' or string.char(i))) |
| | for name, count in pairs(data) do | | for name, count in pairs(data) do |
| − | table.insert(list, {mw.title.new(name, "Template").fullText, count}) | + | local title = mw.title.new(name, "Template") |
| | + | table.insert(list, {title, count}) |
| | end | | end |
| | end | | end |
| Line 56: |
Line 61: |
| | local lang = mw.getContentLanguage(); | | local lang = mw.getContentLanguage(); |
| | for i = 1, #list do | | for i = 1, #list do |
| − | list[i] = ('|-\n| %d || [[%s]] || %s\n'):format(i, list[i][1]:gsub('_', ' '), lang:formatNum(list[i][2])) | + | local protLevel = "" |
| | + | local title = list[i][1] |
| | + | if i < 400 then |
| | + | -- Stop at 400 to avoid breaching the expensive parser function call limit |
| | + | protLevel = title.protectionLevels.edit[1] or "(unprotected)" |
| | + | end |
| | + | list[i] = ('|-\n| %d || [[%s]] || %s || %s \n'):format(i, title.fullText:gsub('_', ' '), lang:formatNum(list[i][2]), protLevel) |
| | end | | end |
| | return table.concat(list) | | return table.concat(list) |