模組:Vgclass
外观
--- Supplementary module for [[Template:Vgc]].
require("strict")
local getArgs = require("Module:Arguments").getArgs
local DEFAULT_PROJECT = "电子游戏"
local ICON_CLASS = "vgc-class"
local ICON_STYLE = "padding-right: 0.167em;"
--- @alias AssessmentScale "class" | "importance"
--- Get an assessment value from [[Special:PageAssessments]].
---
--- @param page table @An `mw.title` object.
--- @param project string @WikiProject name; Chinese-variant-sensitive.
--- @param scale AssessmentScale @Either "class" or "importance".
--- @return string? @Usually simplified Chinese, if exists.
local function get_raw_assessment(page, project, scale)
local assessments = page.pageAssessments
local assessment = assessments[project]
if assessment then
return assessment[scale]
else
return nil
end
end
--- Build an icon for an assessment class.
---
--- @param class string | nil @Assessment class grade.
--- @return string icon @Rendered icon markup, or an empty string.
local function build_class_icon(class)
if class == nil then
return ""
end
-- Avoid confusion with the DYK icon; see [[Template:Vgc#说明]].
if class == "未评" then
return mw.ustring.format(
'<span class="%s" style="%s">[[File:%s|%s|class=noviewer|alt=%s]]</span>',
ICON_CLASS,
ICON_STYLE,
"Symbol dot dot dot gray.svg",
"16x16px",
"未评级"
)
end
return mw.getCurrentFrame():expandTemplate({
title = "Class/icon",
args = {class, ["style"] = ICON_STYLE, ["css-class"] = ICON_CLASS},
})
end
local p = {}
--- Render the module entry point.
---
--- @param frame table @Invocation frame.
--- @return string wikitext @Rendered wikitext.
function p.main(frame)
local args = getArgs(frame)
return p._main(args)
end
--- Render a page link with its project assessment icon.
---
--- @param args table @Template arguments.
--- @return string wikitext @Page link with an optional icon.
function p._main(args)
local title = args[1]
local project = DEFAULT_PROJECT
local page = mw.title.new(title)
local class = get_raw_assessment(page, project, "class")
mw.logObject(class)
local icon = build_class_icon(class)
return mw.ustring.format("%s[[:%s|%s]]", icon, page.fullText, page.text)
end
return p