Moduł:RFC

 Dokumentacja modułu [zobacz] [edytuj] [historia] [odśwież]

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.


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&#32;" 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&#32;"..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&#32;") 		table.insert(result, tostring(v.number)) 		table.insert(result, " : ") 		table.insert(result, formatRFC(v.number, v.data)) 	end 	 	return table.concat(result, "") end,  }