مۆدیوول:interproject
ڕواڵەت
"بەڵگەدارکردنی ئەم مۆدیوولە دەکرێ لە مۆدیوول:interproject/docدا دروست بکرێ"
local export = {}
local m_params = require("Module:parameters")
local function track(page)
require("Module:debug/track")("interproject/" .. page)
return true
end
local function process_links(linkdata, prefix, name, wmlang, sc)
prefix = prefix .. ":" .. (wmlang:getCode() == "ckb" and "" or wmlang:getCode() .. ":")
local links = {}
local iplinks = {}
local m_links = require("Module:links")
local lang = wmlang:getWiktionaryLanguage()
local ipalt = name .. " " .. (wmlang:getCode() == "ckb" and "" or "<sup>" .. wmlang:getCode() .. "</sup>")
for i, link in ipairs(linkdata) do
link.lang = lang
link.sc = sc
link.track_sc = true
link.term = prefix .. link.term
link.tr = "-"
if link.alt == link.term then
link.alt = nil
end
table.insert(iplinks, "<span class=\"interProject\">[[" .. link.term .. "|" .. ipalt .. "]]</span>")
table.insert(links, m_links.full_link(link, "bold"))
end
return links, iplinks
end
function export.wikipedia_box(frame)
local plain_param = {}
local params = {
[1] = plain_param,
[2] = plain_param,
["cat"] = plain_param,
["category"] = {alias_of = "cat"},
["i"] = {type = "boolean"},
["lang"] = {default = "ckb"},
["mul"] = plain_param,
["mullabel"] = plain_param,
["mulcat"] = plain_param,
["mulcatlabel"] = plain_param,
["portal"] = plain_param,
["sc"] = plain_param,
}
local args = m_params.process(frame:getParent().args, params)
if args.mul or args.mullabel or args.mulcat or args.mulcatlabel then
track("wikipedia-box-mul")
end
local wmlang = require("Module:wikimedia languages").getByCodeWithFallback(args["lang"]) or error("The Wikimedia language code \"" .. args["lang"] .. "\" is not valid.")
local sc = args["sc"] and require("Module:scripts").getByCode(args["sc"], "sc") or nil
local linkdata = {}
if args["cat"] then
table.insert(linkdata, {term = "Category:" .. args["cat"], alt = args[1] or args["cat"]})
elseif args["portal"] then
table.insert(linkdata, {term = "Portal:" .. args["portal"], alt = args[1] or args["portal"]})
else
table.insert(linkdata, {term = args[1] or mw.title.getCurrentTitle().text, alt = args[2]})
end
if args["mul"] or args["mulcat"] then
if args["mulcat"] then
table.insert(linkdata, {term = "Category:" .. args["mulcat"], alt = args["mulcatlabel"] or args["mulcat"]})
else
table.insert(linkdata, {term = args["mul"], alt = args["mullabel"]})
end
end
local links, iplinks = process_links(linkdata, "w", "Wikipedia", wmlang, sc)
if frame.args["slim"] then
return
"<div class=\"sister-wikipedia sister-project noprint floatleft\" style=\"border: solid #aaa 1px; font-size: 90%; background: #f9f9f9; width: 250px; padding: 4px; text-align: right;\">" ..
"<div style=\"float: right;\">[[File:Wikipedia-logo.png|14px|none| ]]</div>" ..
"<div style=\"margin-right: 15px;\">" ..
" " ..
table.concat(links, " و ") ..
" لە " ..
(wmlang:getCode() == "ckb" and "" or wmlang:getCanonicalName() .. " ") ..
"Wikipedia" ..
"</div>" ..
"</div>"
else
local linktype
if args["cat"] then
linktype = "پۆلێکی"
elseif args["mul"] then
linktype = "وتارگەلێکی"
elseif args["mulcat"] then
linktype = "پۆلگەلێکی"
elseif args["portal"] then
linktype = "دەروازەیەکی"
else
linktype = "وتارێکی"
end
return
"<div class=\"sister-wikipedia sister-project noprint floatleft\" style=\"border: 1px solid #aaa; font-size: 90%; background: #f9f9f9; width: 250px; padding: 4px; text-align: right;\">" ..
"<div style=\"float: right;\">[[File:Wikipedia-logo-v2.svg|44px|none|link=|alt=]]</div>" ..
"<div style=\"margin-right: 60px;\">" ..
"[[ویکیپیدیا]]ی " .. wmlang:getCanonicalName() .. " " .. linktype .. " لەسەر:" ..
"<div style=\"margin-right: 10px;\">" .. table.concat(links, " و ") .. " ھەیە. </div>" ..
"</div>" ..
table.concat(iplinks) .. ((args[1] == mw.title.getCurrentTitle().text and not args[2]) and "[[Category:wikipedia with redundant first parameter]]" or "") ..
"</div>"
end
end
function export.projectlink(frame, compat)
local plain_param = {}
local required = {required = true}
local boolean = {type = "boolean"}
local iparams = {
["prefix"] = required,
["name"] = required,
["image"] = required,
["requirelang"] = boolean,
["compat"] = boolean,
}
local iargs = m_params.process(frame.args, iparams)
compat = compat or iargs.compat
local lang_required = iargs.requirelang or false
local lang_param = compat and "lang" or 1
local term_param = compat and 1 or 2
local alt_param = compat and 2 or 3
local params = {
[lang_param] = {required = lang_required},
[term_param] = plain_param,
[alt_param] = plain_param,
["i"] = boolean,
["nodot"] = plain_param,
["sc"] = plain_param,
}
local args = m_params.process(frame:getParent().args, params)
local wmlang = args[lang_param] or "ckb"
wmlang = require("Module:wikimedia languages").getByCodeWithFallback(wmlang) or error("The Wikimedia language code \"" .. wmlang .. "\" is not valid.")
local sc = args["sc"] and require("Module:scripts").getByCode(args["sc"], "sc") or nil
local term = args[term_param] or mw.title.getCurrentTitle().text
local linkdata = {term = term, alt = args[alt_param]}
if args["i"] then
if linkdata.alt then
linkdata.alt = "''" .. linkdata.alt .. "''"
else
-- While it is true that the link module automatically removes italics from terms,
-- linkdata.term is used outside this module too (image link and "interProject" link)
linkdata.alt = "''" .. linkdata.term .. "''"
end
end
local links, iplinks = process_links({linkdata}, iargs["prefix"], iargs["name"], wmlang, sc)
return
"[[Image:" .. iargs["image"] .. "|15px|link=" .. iargs["prefix"] .. ":" .. (wmlang:getCode() == "en" and "" or wmlang:getCode() .. ":") .. term .. "]] " ..
table.concat(links, " و ") ..
" لە " ..
(wmlang:getCode() == "ckb" and "" or "the " .. wmlang:getCanonicalName() .. " ") ..
" " .. iargs["name"] .. (args["nodot"] and "" or ".") ..
table.concat(iplinks)
end
return export