local export = {}
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() == "en" and "" or wmlang:getCode() .. ":")
local links = {}
local iplinks = {}
local m_links = require("Module:links")
local lang = wmlang:getWiktionaryLanguage()
local ipalt = name .. " " .. (wmlang:getCode() == "en" and "" or "<sup>" .. wmlang:getCode() .. "</sup>")
for i, link in ipairs(linkdata) do
link.lang = lang
link.sc = sc
link.term = prefix .. link.term
link.tr = "-"
table.insert(iplinks, "<span class=\"interProject\">]</span>")
table.insert(links, m_links.full_link(link, "bold"))
end
return links, iplinks
end
function export.wikipedia_box(frame)
local params = {
= {},
= {},
= {},
= {alias_of = "cat"},
= {},
= {alias_of = "dab"},
= {type = "boolean"},
= {default = "en"},
= {},
= {},
= {},
= {},
= {},
= {},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local wmlang = require("Module:wikimedia languages").getByCodeWithFallback(args) or error("The Wikimedia language code \"" .. args .. "\" is not valid.")
local sc = args and (require("Module:scripts").getByCode(args) or error("The script code \"" .. sc .. "\" is not valid.")) or nil
local linkdata = {}
if args then
table.insert(linkdata, {term = "Category:" .. args, alt = args or args})
elseif args then
table.insert(linkdata, {term = "Portal:" .. args, alt = args or args})
else
table.insert(linkdata, {term = args or args or mw.title.getCurrentTitle().text, alt = args or args or args or mw.title.getCurrentTitle().text})
end
if args or args then
if args then
table.insert(linkdata, {term = "Category:" .. args, alt = args or args})
else
table.insert(linkdata, {term = args, alt = args or args})
end
end
local links, iplinks = process_links(linkdata, "w", "Wikipedia", wmlang, sc)
if frame.args then
return
"<div class=\"sister-wikipedia sister-project noprint floatright\" style=\"border: solid #aaa 1px; font-size: 90%; background: #f9f9f9; width: 250px; padding: 4px; text-align: left;\">" ..
"<div style=\"float: left;\">]</div>" ..
"<div style=\"margin-left: 15px;\">" ..
" " ..
table.concat(links, " and ") ..
" on " ..
(wmlang:getCode() == "en" and "" or wmlang:getCanonicalName() .. " ") ..
"Wikipedia" ..
"</div>" ..
"</div>"
else
local linktype
if args then
linktype = "a category"
elseif args or args then
linktype = "articles"
elseif args then
linktype = "categories"
elseif args then
linktype = "a portal"
else
linktype = "an article"
end
return
"<div class=\"sister-wikipedia sister-project noprint floatright\" style=\"border: 1px solid #aaa; font-size: 90%; background: #f9f9f9; width: 250px; padding: 4px; text-align: left;\">" ..
"<div style=\"float: left;\">]</div>" ..
"<div style=\"margin-left: 60px;\">" ..
wmlang:getCanonicalName() .. " ] has " .. linktype .. " on:" ..
"<div style=\"margin-left: 10px;\">" .. table.concat(links, " and ") .. "</div>" ..
"</div>" ..
table.concat(iplinks) .. ((args == mw.title.getCurrentTitle().text and not (args or args)) and "]" or "") ..
"</div>"
end
end
function export.projectlink(frame, compat)
local iparams = {
= {required = true},
= {required = true},
= {required = true},
= {type = "boolean"},
}
iargs = require("Module:parameters").process(frame.args, iparams)
compat = compat or iargs.compat
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 = {
= {},
= {},
= {},
= {},
= {type = "boolean"},
= {},
= {},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
if args.dab then
track("projectlink-dab")
end
local wmlang = args or "en"
wmlang = require("Module:wikimedia languages").getByCodeWithFallback(wmlang) or error("The Wikimedia language code \"" .. wmlang .. "\" is not valid.")
local sc = args and require("Module:scripts").getByCode(args, "sc") or nil
local linkdata = {term = args or args or mw.title.getCurrentTitle().text, alt = args or args or args or mw.title.getCurrentTitle().text}
if args then
linkdata.alt = "''" .. linkdata.alt .. "''"
end
local links, iplinks = process_links({linkdata}, iargs, iargs, wmlang, sc)
return
" .. "|15px|link=" .. linkdata.term .. "]] " ..
table.concat(links, " and ") ..
" on " ..
(wmlang:getCode() == "en" and "" or "the " .. wmlang:getCanonicalName() .. " ") ..
" " .. iargs .. (args and "" or ".") ..
table.concat(iplinks)
end
return export