Moduł:RFC
Użycie[edytuj kod]
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 kod]
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, }