Documentation for this module may be created at Module:SummarySnippet/doc
local p = {}
-- Trims whitespace from a string
local function trim(s)
return s:match("^%s*(.-)%s*$")
end
function p.fromPage(frame)
local page = frame.args[1]
local length = tonumber(frame.args[2]) or 150
if not page or page == '' then
return "No page name provided."
end
local title = mw.title.new(page)
if not title or not title.exists then
return "Page not found: " .. page
end
local text = title:getContent()
if not text then
return "No content for page: " .. page
end
-- Strip templates and formatting
text = mw.text.killMarkers(text)
text = mw.ustring.gsub(text, '{{.-}}', '')
text = mw.ustring.gsub(text, '%[%[.-%|', '')
text = mw.ustring.gsub(text, '%[%[', '')
text = mw.ustring.gsub(text, '%]%]', '')
text = mw.ustring.gsub(text, "''+", "")
text = text:gsub("\n", " ")
text = text:gsub("%s+", " ")
text = trim(text)
if #text > length then
return mw.ustring.sub(text, 1, length) .. "..."
else
return text
end
end
return p