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
Ligne 55 : Ligne 55 :
}
}


function modelRef (b,precision,field)
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 content, pr = "", ""
local ref = mw.text.split(rr,'+')
if #b.Author > 0 then
if ref[3] then
content = b.Author .. ". "
if not refer[ref[3]] then refer[ref[3]] = '' end
else
refer[ref[3]] = refer[ref[3]] .. modelRef(ref[1],ref[2],ref[3])
content = b.Editor .. "ed"
end
if #precision > 0 then
pr = ". " .. precision
end
content = content .. model[b["ItemType"]](b)
if field ~= "Publication" and field ~= "Reference" then
return '<ref name="' .. b.ZoteroKey .. precision .. '">' .. content .. pr .. '.</ref> '
else
return "*" .. content .. pr .. "\n"
end
end
 
 
function p.tableRef(Zref,result) -- 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(Zref,'+')
local Zkey = mw.text.truncate(Ref[1],-8,'')
if Ref[3] then
if not result[Ref[3]] then result[Ref[3]] = '' end
precision = Ref[2] or ''
if bbib[Zkey] then
--result[Ref[3]] = result[Ref[3]] .. model[bbib[Zkey]["ItemType"]](bbib[Zkey],precision)
result[Ref[3]] = result[Ref[3]] .. modelRef(bbib[Zkey],precision,Ref[3])
end
end
end
end
end
Ligne 117 : Ligne 92 :




function p.split(frame)
function p.split2(frame)
if #frame.args['texte'] < 2 or string.sub(frame.args['texte'],1,3) == '[[:' then
local res,precision = '','',''
local ref =  frame.args['ref']:gsub('(.-)%s*$','%1')
local precision = frame.args['precision']:gsub("[\n\r]","")
if #ref < 2 then
return ''
return ''
else
return modelRef(ref,precision,frame.args['field'])
end
end
local texte,res,precision = '','',''
end
local texte_libre = mw.text.split(frame.args['texte'],'€€€')
 
if #texte_libre % 2 == 0 then
function modelRef(ref,precision,field)
texte = '!!! ERREUR BALISES NOTES !!!\n\n'
local content, pr = "", ""
end
r = mw.text.truncate(ref,-8,'')
for n, chunk in ipairs(texte_libre) do
if bbib[r] then
if (n % 2 == 0) then
b = bbib[r]
local note = mw.text.split(chunk:gsub("[\n\r]",""),'£££')
if #b.Author > 1 then
local ref =  note[1]:gsub('(.-)%s*$','%1')
content = b.Author .. ". "
if #ref < 2 then
res = ''
else
ref = mw.text.truncate(ref,-8,'')
local precision = ''
if #note > 1 then
precision = ', ' .. note[2]
end
if bbib[ref] then
--res = model[bbib[ref]["ItemType"]](bbib[ref],note[2])
res = modelRef(bbib[ref],precision,'')
else
local name = mw.text.truncate(note[1],50,'') .. precision
name = string.gsub(name, "%W",'_')
res = '<ref name="' .. name .. '">' .. note[1] .. precision .. '</ref>'
end
end
texte = texte .. res
else
else
texte = texte .. chunk
content = b.Editor .. "ed"
end
end
if #precision > 1 then
pr = ". " .. precision
end
content = content .. model[b["ItemType"]](b)
else
content = ref
end
end
return texte
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
end


function p.split2(frame)
function p.modelRefPub(rr)
local res,precision = '',''
local ct, pr, r = '','', mw.text.truncate(rr[1],-8,'')
local ref =  frame.args['ref']:gsub('(.-)%s*$','%1')
if bbib[r] then
local precision = frame.args['precision']:gsub("[\n\r]","")
b = bbib[r]
if #ref < 2 then
if #b.Author > 1 then
res = ''
ct = b.Author .. ". "
else
r = mw.text.truncate(ref,-8,'')
 
if #precision > 1 then
precision = ', ' .. precision
end
if bbib[r] then
--res = model[bbib[ref]["ItemType"]](bbib[ref],note[2])
res = modelRef(bbib[r],precision,'')
else
else
local name = mw.hash.hashValue( 'sha1', ref .. precision )
ct = b.Editor .. "ed"
nn = mw.hash.hashValue( 'sha1', ref )
res = '<ref name="' .. name .. '">' .. ref .. precision .. '</ref>'
end
end
if #rr[2] > 1 then
pr = ". " .. rr[2]
end
ct = ct .. model[b["ItemType"]](b)
else
ct = rr[1]:gsub("%s+", "")
end
end
return res
return "*" .. ct .. pr .. "\n"
end
end


function p.ref(ref,precision)
function p.ref(ref,precision)

Version du 1 février 2022 à 17:12

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

local p = {}
local bib = mw.ext.cargo.query('Zotero', '_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',{groupBy = 'ZoteroKey', orderBy = 'ZoteroKey', limit = 4000})
local bbib={}

for _,r in ipairs(bib) do
	bbib[r['ZoteroKey']] = r
	if r['Date__precision'] == '3' then
		bbib[r['ZoteroKey']]['Date'] = mw.text.truncate(r['Date'],4,'')
	end
end

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.expandRef(refs,typeRef)
	local result = ''
	if refs then
		for _,ref in ipairs(refs) do
			if #ref['Note'] > 1 then
				local Zkey = mw.text.truncate(ref['Note'],-8,'')
				if bbib[Zkey] then
					local templ = 'ZoteroNote'
					if typeRef then templ = 'ZoteroPub' end
			    	bbib[Zkey]['Precisions'] = ref['Precisions'] or nil
					result = result .. frame:expandTemplate{title = templ, args = bbib[Zkey]}
				else
	 				local note = ref['Note']
					if #ref['Precisions'] > 1 then
						note = note .. ', ' .. ref['Precisions']
					end
					if typeRef then
						result = result .. '\n*' .. note
					else	
						result = result .. frame:expandTemplate{title = 'Note', args = {note}}
					end
				end
			end
		end
	end
	return result
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 = 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]:gsub("%s+", "")
	end
	return "*" .. ct .. pr .. "\n"
end


function p.ref(ref,precision)
	local result = '<ref name="' .. ref .. precision .. '">' .. bbib[ref]["Author"] .. ', ' .. bbib[ref]["Editor"] .. pr .. '.</ref> '
	return result
end

return p