![Info](http://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/Lua-Logo.svg/30px-Lua-Logo.svg.png)
Questo è un modulo scritto in Lua. Le istruzioni che seguono sono contenute nella sottopagina Modulo:New Grove/man (modifica · cronologia)
Sandbox: Modulo:New Grove/sandbox (modifica · cronologia) · Sottopagine: lista · Test: Modulo:New Grove/test (modifica · cronologia · Esegui)
Questo modulo serve a creare una citazione alle enciclopedie Grove tramite il template {{New Grove}}. Il modulo è un wrapper del Modulo:Citazione, che filtra i parametri aggiungendo i valori predefiniti (titolo, ISBN, curatori etc.) per le varie edizioni e rimappa i parametri posizionali, che nel template {{New Grove}} hanno un diverso ordine dai template Cita (giustificato da una sua logica).
--[[
* 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
for key, val in pairs(obj) do
copy[key] = val
end
end
return copy
end
-- parametri posizionali: {{New Grove|edizione|nome|cognome|voce|volume|pagine|cid|wl}}
-- edizioni: 1, 2, inst, opera, american, art1, art2, jazz1, jazz2
function p.citation(frame)
local pargs = frame:getParent().args
-- wl determina se inserire o meno un wikilink nel titolo dell'opera
local wl = pargs['wl'] or pargs[8] or Nil
wl = wl and wl ~= ''
-- sceglie edizione (per avere i campi precompilati)
local edition = pargs['edizione'] or pargs[1] or Nil
-- shallow copy dei parametri
local inner_args = table_shallow_copy(pargs)
-- conversione parametri posizionali:
-- il Modulo:Citazione e il Template:New Grove hanno un ordine diverso
-- per i parametri posizionali
inner_args['nome'] = pargs['nome'] or pargs[2]
inner_args['cognome'] = pargs['cognome'] or pargs[3]
inner_args['voce'] = pargs['voce'] or pargs[4]
inner_args['volume'] = pargs['volume'] or pargs[5]
inner_args['pagine'] = pargs['pagine'] or pargs[6]
inner_args['cid'] = pargs['cid'] or pargs[7]
-- New Grove ed. 1
if edition == "1" then
if wl then
inner_args['titolo'] = "The New Grove Dictionary of Music and Musicians"
else
inner_args['titolo'] = "[[Grove Dictionary of Music and Musicians|The New Grove Dictionary of Music and Musicians]]"
end
inner_args['curatore'] = "Stanley Sadie"
inner_args['edizione'] = "1ª ed."
inner_args['editore'] = "MacMillian"
inner_args['città'] = "Londra"
inner_args['anno'] = "1980"
inner_args['ISBN'] = "978-0333231111"
-- New Grove ed. 2
elseif edition == "2" then
if wl then
inner_args['titolo'] = "The New Grove Dictionary of Music and Musicians"
else
inner_args['titolo'] = "[[Grove Dictionary of Music and Musicians|The New Grove Dictionary of Music and Musicians]]"
end
inner_args['curatore'] = "Stanley Sadie"
inner_args['curatore2'] = "John Tyrrell"
inner_args['edizione'] = "2ª ed."
inner_args['editore'] = "Oxford University Press"
inner_args['anno'] = "2001"
inner_args['ISBN'] = "978-0195170672"
-- 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
elseif edition == "opera" then
if wl then
inner_args['titolo'] = "[[New Grove Dictionary of Opera|The New Grove Dictionary of Opera]]"
else
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['curatore2'] = "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
elseif edition == "art1" then
inner_args['titolo'] = "The Grove Dictionary of Art"
inner_args['curatore'] = "Jane Turner"
inner_args['edizione'] = "1ª ed."
inner_args['editore'] = "Oxford University Press"
inner_args['anno'] = "1996"
inner_args['ISBN'] = "1884446000"
-- Grove Dictionary of Art ed. 2
elseif edition == "art2" then
inner_args['titolo'] = "The Grove Dictionary of Art"
inner_args['curatore'] = "Jane Turner"
inner_args['edizione'] = "2ª ed."
inner_args['editore'] = "Oxford University Press"
inner_args['anno'] = "2003"
inner_args['ISBN'] = "0195170687"
-- Grove Dictionary of Jazz ed. 1
elseif edition == "jazz1" then
inner_args['titolo'] = "The New Grove Dictionary of Jazz"
inner_args['curatore'] = "Barry Kernfeld"
inner_args['edizione'] = "1ª ed."
inner_args['editore'] = "MacMillian"
inner_args['anno'] = "1988"
inner_args['ISBN'] = "0312113579"
-- Grove Dictionary of Jazz ed. 2
elseif edition == "jazz2" then
inner_args['titolo'] = "The New Grove Dictionary of Jazz"
inner_args['curatore'] = "Barry Kernfeld"
inner_args['edizione'] = "2ª ed."
inner_args['editore'] = "Oxford University Press"
inner_args['anno'] = "2003"
inner_args['ISBN'] = "1561592846"
-- Oxford Music Online
elseif edition == "online" then
if wl then
inner_args['titolo'] = "[[Oxford Music Online|Grove Music Online]]"
else
inner_args['titolo'] = "Grove Music Online"
end
inner_args['curatore'] = "Laura Macy"
inner_args['editore'] = "Oxford University Press"
inner_args['edizione'] = nil
-- 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"
}
}
end
-- oggetto ambiente per la chiamata del Modulo:Citazione
local cite_object = {
cite_module = require("Modulo:Citazione"),
args = inner_args,
frame = {
args = {}
}
}
function cite_object.getParent()
return cite_object.frame
end
-- chiama la funzione citation dal Modulo:Citazione
return cite_object.cite_module.citation(cite_object)
end
return p