Moduł:RFC
Użycie edytuj
Moduł implementuje szablon {{RFC}} przygotowując wszystkie parametry cytowania na podstawie podanego numeru RFC i przekazując je do {{#invoke:Cytuj|custom}}.
Błędy edytuj
Błędy należy zgłaszać na stronie Wikipedia:Kawiarenka/Kwestie techniczne.
Powyższy opis jest dołączany ze strony Moduł:RFC/opis. (edytuj | historia)
Zobacz podstrony tego modułu. |
local index = mw.loadData("Moduł:RFC/index")
local isAlso = mw.loadData("Moduł:RFC/is-also")
function retrieveRFCInfo(number)
local q = mw.loadData("Moduł:RFC/wd-index")[number]
if not q then
return nil
end
local title = mw.wikibase.getBestStatements(q, "P1476")
if not title or (#title <= 0) then
return nil
end
local result = {}
local options = {}
local snak = require("Moduł:Wikidane/format/snak")
for i, v in ipairs(title) do
local s = snak.format(v.mainsnak, options)
if s and (#s > 0) then
result[1] = s
break
end
end
if not result[1] then
return nil
end
local author = mw.wikibase.getBestStatements(q, "P2093")
if not author or (#author <= 0) then
author = mw.wikibase.getBestStatements(q, "P50")
end
if author then
local authors = {}
for i, v in ipairs(author) do
local s = snak.format(v.mainsnak, options)
table.insert(authors, s)
end
if #authors > 0 then
result.autor = table.concat(authors, "; ")
end
end
local date = mw.wikibase.getBestStatements(q, "P577")
if date then
for i, v in ipairs(date) do
local s = snak.format(v.mainsnak, options)
if s and (#s > 0) then
result.data = s
break
end
end
end
mw.logObject({number, q, result},"retrieveRFCInfo")
return result
end
function formatRFC(number, data, odn, s)
local num = tostring(number)
local padnum = string.sub("0000"..num, -4)
local desc = {}
if isAlso.std[number] then
table.insert(desc, "STD ") table.insert(desc, tostring(isAlso.std[number])) table.insert(desc, ", ")
end
if isAlso.bcp[number] then
table.insert(desc, "BCP ") table.insert(desc, tostring(isAlso.bcp[number])) table.insert(desc, ", ")
end
if isAlso.fyi[number] then
table.insert(desc, "FYI ") table.insert(desc, tostring(isAlso.fyi[number])) table.insert(desc, ", ")
end
local title = mw.title.getCurrentTitle()
table.insert(desc, ((title.namespace == 0) and (title.text == "Request for Comments")) and "RFC " or "[[Request for Comments|RFC]] ") table.insert(desc, num)
desc = table.concat(desc, "")
local args = {
autor = data and data.autor or nil,
["tytuł"] = (data and data[1]) and data[1] or ("RFC "..num),
data = data and data.data or nil,
url = number == 1119 and "https://tools.ietf.org/pdf/rfc1119.pdf" or ("https://tools.ietf.org/html/rfc"..num),
opis = (data and data[1]) and desc or nil,
opublikowany = "[[Internet Engineering Task Force|IETF]]",
issn = "2070-1721",
oclc = "943595667",
doi = "10.17487/RFC"..padnum,
["język"] = "en",
s = s,
odn = odn ~= nil and odn or mw.getCurrentFrame():expandTemplate{ title="odn/id", args = {"RFC "..num}},
}
return require("Moduł:Cytuj").custom({args=args})
end
return {
cytuj = function(frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = "Szablon:RFC",
})
local number = args[1] or "{{{1}}}"
local odn = args.odn
local s = args.s
number = tonumber(number) or number
local data = index[number] or retrieveRFCInfo(number)
return formatRFC(number, data, odn, s)
end,
index = function()
local list = {}
for k, v in pairs(index) do
local item = { number = k, data = v }
table.insert(list, { number = k, data = v })
end
table.sort(list, function(a, b) return a.number < b.number end)
local result = {}
for _, v in ipairs(list) do
table.insert(result, "\n; ")
table.insert(result, "RFC ")
table.insert(result, tostring(v.number))
table.insert(result, " : ")
table.insert(result, formatRFC(v.number, v.data))
end
return table.concat(result, "")
end,
}