Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:Number of works: Difference between revisions

From ProleWiki, the proletarian encyclopedia
No edit summary
No edit summary
Line 1: Line 1:
local p = {}
local p = {}


-- Table to store local cached results during this execution
-- Function to get the number of works using a parser function
local cache = {}
 
-- Function to get the number of works
function p.getWorkCount(frame)
function p.getWorkCount(frame)
     local category = frame.args.category or ''
     local category = frame.args.category or ''
     if category == '' then return "0 works" end
     if category == '' then return "0 works" end


     -- Check if we already have the result for this category in local cache
     -- Use the PAGESINCATEGORY parser function
    if cache[category] then
     local pages = frame:preprocess('{{PAGESINCATEGORY:' .. category .. '}}')
        return cache[category]
    end
 
    -- Perform the expensive call to get the number of pages in the category
     local pages = mw.site.stats.pagesInCategory(category)


     -- Format the result
     -- Return the result formatted
     local result = ''
     local result = ''
     if tonumber(pages) == 1 then
     if tonumber(pages) == 1 then
Line 24: Line 16:
         result = pages .. " works"
         result = pages .. " works"
     end
     end
    -- Store the result in the local cache
    cache[category] = result


     return result
     return result

Revision as of 15:05, 14 September 2024

local p = {}

-- Function to get the number of works using a parser function
function p.getWorkCount(frame)
    local category = frame.args.category or ''
    if category == '' then return "0 works" end

    -- Use the PAGESINCATEGORY parser function
    local pages = frame:preprocess('{{PAGESINCATEGORY:' .. category .. '}}')

    -- Return the result formatted
    local result = ''
    if tonumber(pages) == 1 then
        result = "1 work"
    else
        result = pages .. " works"
    end

    return result
end

function p.main(frame)
    return p.getWorkCount(frame)
end

return p