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

Module:Reading time: Difference between revisions

From ProleWiki, the proletarian encyclopedia
No edit summary
No edit summary
Line 9: Line 9:
     -- Ensure that content is a string
     -- Ensure that content is a string
     if type(content) == "string" then
     if type(content) == "string" then
         -- Calculate the reading time based on content length
         -- Split the content into words using spaces as a delimiter
         local wordCount = utf8.len(content:match("%S+"))
         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
         -- 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
        -- 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