![]() | This is the module sandbox page for Module:Get short description (diff). |
Implements {{get short description}}.
require ('strict')
--[[--------------------------< P A T T E R N S _ T >----------------------------------------------------------
a sequence of patterns to match canonical template name and its redirects by transclusion counts as of 2024-08-15:
'Short description', -- 6,090,442 (canonical form)
'Short Description', -- 124
'Des', -- 20
'Shortdesc', -- 10
'Short desc', -- 8
'Shortdescription', -- 6
]]
local patterns_t = {
'[Ss]hort [Dd]escription',
'[Dd]es',
'[Ss]hort *desc',
'[Ss]hortdescription',
}
--[[-----------------------------< G E T C O N T E N T >-------------------------------------------------------
fetch the article's raw wikitext
]]
local function getContent(title)
local success, titleObj = pcall(mw.title.new, title) -- get a title object for title
if not success then return nil end -- return nil if sommat went wron
return titleObj:getContent() -- return wikitext else
end
--[[-----------------------------< M A I N >-------------------------------------------------------------------
]]
local function main(frame, title) -- do we really need <title> here?
local title = frame.args[1]
local wikitext = getContent(title)
if wikitext == nil then return "" end -- sommat went wrong, abandon
for _, pattern in ipairs (patterns_t) do -- for each pattern in the sequence of redirect patterns
local description = wikitext:match ('{{%s*' .. pattern .. '%s*|%s*([^|}]+)%s*'); -- try to find a match
if description then
return description; -- found one, stop looking and done
end
end
end
--[[-----------------------------< E X P O R T S >-------------------------------------------------------------
]]
return {
main = main,
}