Module:Reading time

From ProleWiki, the proletarian encyclopedia
Revision as of 14:56, 17 September 2023 by CriticalResist (talk | contribs)
-- 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
        -- Split the content into words using spaces as a delimiter
        local words = {}
        for word in content:gmatch("%S+") do
            table.insert(words, word)
        end

        -- Calculate the reading time based on the number of words
        local wordCount = #words

        -- 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