モジュール:InterwikiLink
このモジュールについての説明文ページを モジュール:InterwikiLink/doc に作成できます
require("Module:No globals") local p = {} local wb = mw.wikibase or error("wikibase is not installed.") --[[ @return https://www.mediawiki.org/wiki/Extension:Wikibase_Client/Lua#mw.wikibase.entity | nil ]] function p.getCurrentEntity() return wb.getEntity() end function p.getEntity(id) return wb.getEntity("Q" .. tostring(id)) end --[[ @param {string} proj @param {string} label @param {string | nil} qid @return {string | nil} ]] local function check_wikidata(proj, label, qid) local entity = qid and p.getEntity(qid) or p.getCurrentEntity() local prefixes = { ["jawiki"] = "", ["jawiktionary"] = "wikt:", ["jawikibooks"] = "b:", ["jawikiquote"] = "q:", ["jawikinews"] = "n:", ["jawikisource"] = "s:", ["jawikiversity"] = "v:", ["jawikivoyage"] = "voy:", ["metawiki"] = "m:", ["commonswiki"] = "c:", ["wikidatawiki"] = "d:", } local prefix = prefixes[proj] or error("site " .. proj .. " doesn't exist.") -- piped link text local linktext = label and "|" .. label or "" --[[https://www.mediawiki.org/wiki/Extension:Wikibase_Client/Lua#mw.wikibase.getSitelink]] local sl = entity:getSitelink(proj) if sl then return "[[" .. prefix .. sl .. linktext .. "]]" else -- non-existent return nil end end local function link_from_wikidata(file, pj_int, pj_abbr, qid) local link = check_wikidata(pj_int, pj_abbr, qid) link = link and link or "<del>" .. pj_abbr .. "</del>" return "* [[File:" .. file .. "|16px|link=]]" .. link .. "\n" end function p.manually(args) -- TODO 現在ParserFunctionsで実装されているwikidata=noの処理をここに持ってくる end function p.from_wikidata(frame, qid) qid = qid or nil -- convert into wikitext local wikitext = frame:expandTemplate { title="flatlist", args = { style = "border:#AAA solid 1px;padding:0.3em;line-height:1.0;", -- {{Flatlist}}は{{{1}}}しか受け付けない。{{{1}}}の型は箇条書き要素。 link_from_wikidata("Wikipedia-logo-v2.svg", "jawiki", "jawp", qid) .. link_from_wikidata("Wiktionary-logo.svg", "jawiktionary", "jawt", qid) .. link_from_wikidata("Wikibooks-logo.svg", "jawikibooks", "jawb", qid) .. link_from_wikidata("Wikiquote-logo.svg", "jawikiquote", "jawq", qid) .. link_from_wikidata("Wikinews-logo.png", "jawikinews", "jawn", qid) .. link_from_wikidata("Wikisource-logo.svg", "jawikisource", "jaws", qid) .. link_from_wikidata("Wikiversity-logo.svg", "jawikiversity", "jawv", qid) .. link_from_wikidata("Wikivoyage-logo.svg", "jawikivoyage", "jawy", qid) .. link_from_wikidata("Commons-logo.svg", "commonswiki", "commons", qid) .. link_from_wikidata("Wikimedia Community Logo.svg", "metawiki", "meta", qid) .. link_from_wikidata("Wikidata-logo.svg", "wikidatawiki", "wikidata", qid) } } mw.log(wikitext) return wikitext end function p.main(frame) return p.from_wikidata(frame, nil) end return p