Chronos chronos left.png
Rusmed logo color.png
Chronos chronos right.png

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Différences entre les versions de « Module:Fo »

De Commission Historique
m
m
Balise : Révocation manuelle
 
(7 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
local p = {}
local p = {}
local fields = '_pageName,ZoteroKey,TitleItem,Author,Editor,Date,Date__precision,Place,ItemType,Publisher,PublicationTitle,Volume,PublicationYear,Pages,Url,FilingDate,AccessDate,Type,Number,IssuingAuthority,Archive,Medium,Interviewer,AccessDate'
local bbib=mw.loadData( 'module:Fo/data' )
local fieldds = mw.text.split(fields,',')
local args = {groupBy = 'ZoteroKey', orderBy = 'ZoteroKey', limit = 4000}
local bib = mw.ext.cargo.query('Zotero', fields, args)
local bbib={}
 
for _,r in ipairs(bib) do
bbib[r['ZoteroKey']] = {}
for _,f in ipairs(fieldds) do
bbib[r['ZoteroKey']][f] = r[f] or ''
end
if r['Date__precision'] == '3' then
bbib[r['ZoteroKey']]['Date'] = mw.text.truncate(r['Date'],4,'')
end
end


local model = {
local model = {
Ligne 70 : Ligne 56 :


function p.split2(frame)
function p.split2(frame)
local res,precision = '','',''
local res,precision = '',''
local ref =  frame.args['ref']:gsub('(.-)%s*$','%1')
local ref =  frame.args['ref']:gsub('(.-)%s*$','%1')
local precision = frame.args['precision']:gsub("[\n\r]","")
local precision = frame.args['precision']:gsub("[\n\r]","")
Ligne 112 : Ligne 98 :
b = bbib[r]
b = bbib[r]
if #b.Author > 1 then
if #b.Author > 1 then
ct = b.Author .. ". "
ct = string.gsub(b.Author,";"," ; ") .. ". "
else
else
ct = b.Editor .. "ed"
ct = b.Editor .. "ed"
Ligne 131 : Ligne 117 :
b = bbib[r]
b = bbib[r]
if #b.Author > 1 then
if #b.Author > 1 then
ct = b.Author .. ". "
ct = string.gsub(b.Author,";"," ; ") .. ". "
else
else
ct = b.Editor .. "ed"
ct = b.Editor .. "ed"
Ligne 157 : Ligne 143 :
function p.splitTextN(refs)
function p.splitTextN(refs)
local refer = ''
local refer = ''
if #refs > 4 then
if refs and #refs > 4 then
for _,rr in ipairs(mw.text.split(refs:gsub("%s*#%s*","#"),'#')) do
for _,rr in ipairs(mw.text.split(refs:gsub("%s*#%s*","#"),'#')) do
if #rr > 4 then
if #rr > 4 then
Ligne 169 : Ligne 155 :
function p.splitTextRP(refs)
function p.splitTextRP(refs)
local refer = ''
local refer = ''
if #refs > 4 then
if refs and #refs > 4 then
for _,rr in ipairs(mw.text.split(refs:gsub("%s*#%s*","#"),'#')) do
for _,rr in ipairs(mw.text.split(refs:gsub("%s*#%s*","#"),'#')) do
if #rr > 4 then
if #rr > 4 then

Version actuelle datée du 25 mars 2022 à 16:08

La documentation pour ce module peut être créée à Module:Fo/doc

local p = {}
local bbib=mw.loadData( 'module:Fo/data' )

local model = {
	["book"] = function (b) 
		return b.TitleItem .. ". " .. b.Place .. " : " .. b.Publisher .. ", " .. mw.text.truncate(b.PublicationYear,4,'')
	end,
	["bookSection"] = function (b) 
		return b.TitleItem .. ". In:" .. b.PublicationTitle .. ", " .. b.Editor .. ", " .. b.Pages .. ". " .. b.Place .. " : " .. b.Publisher .. ", " .. mw.text.truncate(b.PublicationYear,4,'')
	end,
	["journalArticle"] = function (b) 
		return b.TitleItem .. ". " .. b.PublicationTitle .. " " .. b.Volume .. " (" ..  mw.text.truncate(b.PublicationYear,4,'') .. ") : " .. b.Pages
	end,
	["thesis"] = function (b) 
		return b.TitleItem .. ". " .. b.Type .. ". " .. b.Place .. ", " .. mw.text.truncate(b.PublicationYear,4,'')
	end,
	["magazineArticle"] = function (b) 
		return b.TitleItem .. ". " .. b.PublicationTitle .. ". " .. b.Date
	end,	
	["patent"] = function (b) 
		return b.TitleItem .. ". " .. b.IssuingAuthority .. " " .. b.Number .. ", " .. "{{int:Template-depose_le}} " .. b.FilingDate .. " {{int:Template-et_accorde_le}} " .. b.Date
	end,	
	["encyclopediaArticle"] = function (b) 
		return b.TitleItem .. ". In:" .. b.PublicationTitle .. ". " .. b.Publisher .. ", " .. mw.text.truncate(b.PublicationYear,4,'') .. ". " .. b.Url
	end,
	["report"] = function (b) 
		return b.TitleItem .. ". " .. b.ItemType .. " " .. b.Number .. ". " .. b.Place .. " : " .. b.Publisher .. ", "   .. mw.text.truncate(b.PublicationYear,4,'') .. ". " .. b.Url
	end,
	["interview"] = function (b) 
		return b.TitleItem .. ", {{int:Template-entretien_realise_par}}" .. b.Interviewer .. ". " .. b.Medium .. ", "   .. b.Date .. ". " .. b.Archive .. ". " .. b.Url
	end,
	["videoRecording"] = function (b) 
		return b.TitleItem .. ". " .. b.Place .. " : " .. b.Publisher .. ", " .. b.Date .. ". " .. b.Url .. ", {{int:Template-Page_consulte_le}}" .. b.AccessDate
	end,
	["presentation"] = function (b) 
		return b.TitleItem .. ". " .. b.Place .. ", " .. b.Date
	end,
	["newspaperArticle"] = function (b) 
		return b.TitleItem .. ". " .. b.PublicationTitle .. ", " .. b.Date .. ". " .. b.Url .. ", {{int:Template-Page_consulte_le}}" .. b.AccessDate
	end,
	["webpage"] = function (b) 
		return b.TitleItem .. ". " .. b.PublicationTitle .. ", " .. b.Date .. ". " .. b.Url .. ", {{int:Template-Page_consulte_le}}" .. b.AccessDate
	end,
	["blogPost"] = function (b) 
		return b.TitleItem .. ". " .. b.PublicationTitle .. ", " .. b.Date .. ". " .. b.Url .. ", {{int:Template-Page_consulte_le}}" .. b.AccessDate
	end,	
}

function p.tableRef(rr,refer) -- Place la référence Zref dans la table result dont les clefs sont les champs (ex. Nom, Prénom, Date de naissance...)(Ref[3]) et les valeurs des tables de tables contenant clef Zotero et précision.
	local ref = mw.text.split(rr,'+')
	if ref[3] then
		if not refer[ref[3]] then refer[ref[3]] = '' end
		refer[ref[3]] = refer[ref[3]] .. modelRef(ref[1],ref[2],ref[3])
	end
end	

function p.split2(frame)
	local res,precision = '',''
	local ref =  frame.args['ref']:gsub('(.-)%s*$','%1')
	local precision = frame.args['precision']:gsub("[\n\r]","")
	
	if #ref < 2 then
		return ''
	else
		return modelRef(ref,precision,frame.args['field'])
	
	end
end

function modelRef(ref,precision,field)
	local content, pr = "", ""
	r = mw.text.truncate(ref,-8,'')
	if bbib[r] then
		b = bbib[r]
		if #b.Author > 1 then
			content = b.Author .. ". "
		else
			content = b.Editor .. "ed"
		end
		if #precision > 1 then
			pr = ". " .. precision
		end		
		content = content .. model[b["ItemType"]](b)
	else 
		content = ref
	end
	local name = mw.hash.hashValue( 'sha1', content .. pr )
	if field ~= "Publication" and field ~= "Reference" then
		return '<ref name="' .. name .. '">' .. content .. pr .. '.</ref>'
	else
		return "*" .. content .. pr .. "\n"	
	end		
end

function p.modelRefPub(rr)
	local ct, pr, r = '','', mw.text.truncate(rr[1],-8,'')
	if bbib[r] then
		b = bbib[r]
		if #b.Author > 1 then
			ct = string.gsub(b.Author,";"," ; ") .. ". "
		else
			ct = b.Editor .. "ed"
		end
		if #rr[2] > 1 then
			pr = ". " .. rr[2]
		end		
		ct = ct .. model[b["ItemType"]](b)
	else 
		ct = rr[1]
	end
	return "*" .. ct .. pr .. "\n"
end

function p.modelRefNote(rr)
	local ct, pr, r = '','', mw.text.truncate(rr[1],-8,'')
	if bbib[r] then
		b = bbib[r]
		if #b.Author > 1 then
			ct = string.gsub(b.Author,";"," ; ") .. ". "
		else
			ct = b.Editor .. "ed"
		end
		if #rr[2] > 1 then
			pr = ". " .. rr[2]
		end		
		ct = ct .. model[b["ItemType"]](b)
	else 
		ct = rr[1]
	end
	local name = mw.hash.hashValue( 'sha1', ct .. pr )
	return '<ref name="' .. name .. '">' .. ct .. pr .. '.</ref>'
end


function p.split(frame)
	local refer = ''
	for _,rr in ipairs(mw.text.split(frame.args[1]:gsub("%s*#%s*","#"),'#')) do
		refer = refer .. p.modelRefPub(mw.text.split(rr,'+'))
	end
	return refer
end

function p.splitTextN(refs)
	local refer = ''
	if refs and #refs > 4 then
		for _,rr in ipairs(mw.text.split(refs:gsub("%s*#%s*","#"),'#')) do
			if #rr > 4 then
				refer = refer .. p.modelRefNote(mw.text.split(rr,'+'))
			end
		end
	end
	return refer
end

function p.splitTextRP(refs)
	local refer = ''
	if refs and #refs > 4 then
		for _,rr in ipairs(mw.text.split(refs:gsub("%s*#%s*","#"),'#')) do
			if #rr > 4 then
				refer = refer .. p.modelRefPub(mw.text.split(rr,'+'))
			end
		end
	end
	return refer
end
return p