Module:Χρόνος ανάγνωσης: Διαφορά μεταξύ των αναθεωρήσεων

Από την ΠρολεΒίκι, την προλεταριακή εγκυκλοπαίδεια
(Δημιουργία προσθέτου)
 
μ (Μετάφραση)
 
Γραμμή 41: Γραμμή 41:


             -- Create the reading time string
             -- Create the reading time string
             local readingTime = minReadingTime .. "-" .. maxReadingTime .. " minutes"
             local readingTime = minReadingTime .. "-" .. maxReadingTime .. " λεπτά"


             return readingTime
             return readingTime
         else
         else
             return "Error: Invalid content"
             return "Σφάλμα: Μη έγκυρο περιεχόμενο"
         end
         end
     else
     else
         return "Error: Invalid page title"
         return "Σφάλμα: Μη έγκυρο όνομα σελίδας"
     end
     end
end
end


return p
return p

Τελευταία αναθεώρηση της 10:19, 21 Απριλίου 2024

Documentation for this module may be created at Module:Χρόνος ανάγνωσης/τεκμηρίωση

-- Υπολογισμός χρόνου ανάγνωσης για κάθε σελίδα, στρογγυλοποιημένος στα πολλαπλάσια του 5. Η έξοδος είναι "X-Ψ λεπτά".
-- Χρησιμοποιήστε σε οποιαδήποτε σελίδα ή πρότυπο με την εντολή {{#invoke:Χρόνος ανάγνωσης|estimateReadingTime|ΌνομαΣελίδας}}
-- (αντί για ΌνομαΣελίδας γράψτε το όνομα της σελίδας)

local p = {}
local mw = require("mw")

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

    -- Ensure that pageTitle is a string
    if type(pageTitle) == "string" then
        -- Use MediaWiki's built-in function to get the page content
        local content = mw.title.new(pageTitle):getContent()

        -- Ensure that content is a string
        if type(content) == "string" then
            -- Count words using a more robust pattern
            local wordCount = 0
            for word in content:gmatch("%S+") do
                wordCount = wordCount + 1
            end

            -- Define the range of reading speeds
            local minSpeed = 160
            local maxSpeed = 238

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

            -- Round the reading times to the nearest multiple of 5
            minReadingTime = math.floor(minReadingTime / 5) * 5
            maxReadingTime = math.ceil(maxReadingTime / 5) * 5
            
            -- Ensure that minReadingTime is at least 1
            if minReadingTime == 0 then
               minReadingTime = 1
            end

            -- Create the reading time string
            local readingTime = minReadingTime .. "-" .. maxReadingTime .. " λεπτά"

            return readingTime
        else
            return "Σφάλμα: Μη έγκυρο περιεχόμενο"
        end
    else
        return "Σφάλμα: Μη έγκυρο όνομα σελίδας"
    end
end

return p