Module:Reading time: Difference between revisions

From ProleWiki, the proletarian encyclopedia
No edit summary
No edit summary
Line 10: Line 10:
     if type(content) == "string" then
     if type(content) == "string" then
         -- Calculate the reading time based on content length
         -- Calculate the reading time based on content length
         local words = mw.ustring.gmatch(content, "%S+")
         local wordCount = utf8.len(content:match("%S+"))
        local wordCount = 0
        for _ in words do
            wordCount = wordCount + 1
        end


         -- Define the range of reading speeds
         -- Define the range of reading speeds

Revision as of 14:56, 17 September 2023

-- Module:ReadingTime

local p = {}

function p.estimateReadingTime(frame)
    -- Get the content from the frame parameter
    local content = frame.args[1]

    -- Ensure that content is a string
    if type(content) == "string" then
        -- Calculate the reading time based on content length
        local wordCount = utf8.len(content:match("%S+"))

        -- Define the range of reading speeds
        local minSpeed = 183
        local maxSpeed = 250

        -- Calculate reading times for both minimum and maximum speeds
        local minReadingTime = math.ceil(wordCount / maxSpeed)
        local maxReadingTime = math.ceil(wordCount / minSpeed)

        -- Create the reading time string
        local readingTime = "Between " .. minReadingTime .. " and " .. maxReadingTime .. " minutes"

        return readingTime
    else
        return "Error: Invalid content"
    end
end

return p