Modulo:New Grove/sandbox: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
 
(16 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1:
--[[
* Modulo impiegato dal Template:New Grove per creare una citazione alle
* enciclopedie Grove (vedi voce Grove Dictionary of Music and Musicians).
* Il modulo è un wrapper che richiama il Modulo:Citazione dopo avere filtrato
* i parametri, aggiungendo i valori predefiniti (titolo, ISBN, curatori etc.)
* e rimappando i parametri posizionali, che nel Template:New Grove hanno un
* diverso ordine dai template Cita (giustificato da una sua logica).
--]]
 
local p = {}
 
-- shallow copy di un oggetto table
local function table_shallow_copy(obj)
local copy = {}
if type(obj) == 'table' then
copy = {}
for key, val in pairs(obj) do
copy[key] = val
end
else
copy = obj
end
return copy
Riga 20 ⟶ 26:
function p.citation(frame)
local wlpargs = frame:getParent().args[8] or frame.args['wl'] or Nil
-- wl determina se inserire o meno un wikilink nel titolo dell'opera
local editionwl = frame.argspargs[1'wl'] or frame.argspargs['edizione'8] or Nil
wl = wl and wl ~= ''
-- sceglie edizione (per avere i campi precompilati)
local edition = frame.args[1] or frame.args['edizione'] or Nil
local edition = pargs['edizione'] or pargs[1] or Nil
-- shallow copy dei parametri
local inner_args = table_shallow_copy(frame.argspargs)
-- controllo perconversione parametri posizionali:
-- il Modulo:Citazione e il Template:New Grove hanno un ordine diverso
inner_args['nome'] = frame.args[2] or frame.args['nome']
-- per i parametri posizionali
inner_args['cognome'] = frame.args[3] or frame.args['cognome']
inner_args['vocenome'] = frame.argspargs[4'nome'] or frame.argspargs['voce'2]
inner_args['volumecognome'] = frame.argspargs[5'cognome'] or frame.argspargs['volume'3]
inner_args['paginevoce'] = frame.argspargs[6'voce'] or frame.argspargs['pagine'4]
inner_args['cidvolume'] = frame.argspargs[7'volume'] or frame.argspargs['cid'5]
inner_args['pagine'] = pargs['pagine'] or pargs[6]
inner_args['nomecid'] = frame.argspargs[2'cid'] or frame.argspargs['nome'7]
-- New Grove ed. 1
Riga 66 ⟶ 78:
-- Grove Dictionary of Musical Instruments
elseif edition == "inst" then
inner_args['titolo'] = "The New Grove Dictionary of Musical Instruments"
inner_args['curatore'] = "Stanley Sadie"
inner_args['editore'] = "MacMillian"
inner_args['città'] = "Londra"
inner_args['anno'] = "1984"
inner_args['ISBN'] = "0943818052"
-- Grove Dictionary of Opera
Riga 80 ⟶ 92:
inner_args['titolo'] = "The New Grove Dictionary of Opera"
end
inner_args['curatore'] = "Stanley Sadie"
inner_args['edizione'] = "1ª ed."
inner_args['editore'] = "MacMillian"
inner_args['città'] = "Londra"
inner_args['anno'] = "1992"
inner_args['ISBN'] = "0333485521"
-- Grove Dictionary of American Music
elseif edition == "american" then
inner_args['titolo'] = "The New Grove Dictionary of American Music"
inner_args['curatore'] = "Stanley Sadie"
inner_args['curatorecuratore2'] = "Hugh Wiley Hitchcock"
inner_args['editore'] = "MacMillian"
inner_args['città'] = "Londra"
inner_args['anno'] = "1986"
inner_args['ISBN'] = "0333378792"
-- Grove Dictionary of Art ed. 1
Riga 132 ⟶ 144:
inner_args['anno'] = "2003"
inner_args['ISBN'] = "1561592846"
-- Oxford Music Online
elseif edition == "online" then
copyif =wl objthen
inner_args['titolo'] = "[[Oxford Music Online]]"
else
inner_args['titolo'] = "Oxford Music Online"
end
inner_args['curatore'] = "Laura Macy"
inner_args['editore'] = "Oxford University Press"
-- parametro edizione assente o invalido
else
return mw.getCurrentFrame():expandTemplate {
title = "Errore template",
args = {
"edizione",
"Citazione Grove",
t = not edition or "r",
cat = "Errori di compilazione del template New Grove"
copy = { }
}
end
Riga 139 ⟶ 173:
args = inner_args,
frame = {
args = inner_args{}
}
}
Riga 146 ⟶ 180:
end
-- chiama la funzione citation dal Modulo:Citazione
return cite_object.cite_module.citation(cite_object)
end