Modulo:Citazione/man
Modulo Lua per la riproduzione delle funzioni dei vari template {{Cita libro}}, {{Cita web}}, {{Cita news}}, {{Cita pubblicazione}}, {{Cita conferenza}} e {{Cita video}}.
Quelle che seguono sono note tecniche sul funzionamento del modulo. Per le istruzioni su come usarlo per inserire citazioni nelle voci vedi il manuale di {{Cita testo}}.
Sottomoduli
- Modulo:Citazione/Configurazione - Contiene le tabelle di configurazione con i nomi dei parametri, i messaggi di errore, i caratteri di separazione...
- Modulo:Citazione/Whitelist - Contiene le tabelle dei parametri accettati dal modulo per poter identificare parametri con un nome errato.
- Modulo:Citazione/Suggerimenti - Contiene una tabella in cui è possibile inserire nomi di parametri che vengono sbagliati spesso e suggerire nel messaggio d'errore il nome del parametro corretto.
- Modulo:Citazione/Argomenti - Serve a generare Modulo:Citazione/Whitelist ed è usato una tantum.
Funzioni accessorie
Nel seguito per settata si intende una variabile diversa da nil e da stringa nulla
- is_set(var)
- vera se una variabile è settata
- first_set(...)
- ritorna la prima variabile settata
- inArray( needle, haystack )
- scandisce l'array haystack e ritorna la posizione in cui si trova il valore needle. Se needle non si trova in haystack o è nil ritorna false
- substitute( msg, args )
- ritorna la stringa msg compilata usando la tabella di valori args. Basata sulla funzione
mw.message.newRawMessage, non granchè documentata, apparentemente nella stringa i$nvengono sostituiti dal valore in posizione ennesima in args. Se args è nil ritorna nil - wrap( key, str, lower )
- formatta il messaggio key con la stringa str. key deve essere un indice della tabella citation_config.messages. Se lower è vero il messaggio viene messo in minuscolo prima di inserire str
- debug_msg(msg)
- inserisce un messaggio di debug nella coda dei messaggi di errore per essere emesso a video
- debug_value(name, value)
- inserisce il messaggio di debug name = value. Usata per emettere il valore di una variabile, da usare per esempio come debug_value('name', name)
- argument_wrapper( args )
- restituisce una tabella per accedere ai valori della tabella originale args mediante una tabella di alias. Data l'istruzione
A=argument_wrapper(args)la chiamataA[key]il valoreargs[first_set(citation_config.aliases[key])]. Questo permette la localizzazione dei parametri e la creazione di alias per lo stesso valore. Per esempio secitation_config.aliases['Chapter'] = {'capitolo', 'contributo', 'voce', 'articolo', 'sezione' }la chiamataA['Chapter']resituirà uno dei valori settati traargs['capitolo'],args['contributo'],args['voce'],args['articolo'],args['sezione']. Aggiunge inoltre il metodo A:ORIGIN che restituisce l'alias con il quale è stato trovato un valore. I valori trovati vengono bufferizzati in una tabella interna. - Aggiunge un messaggio alla coda di errori se:
- key non è presente in citation_config.aliases
- key è una tabella di valori e più di uno di questi è settato
- se in args non viene trovato alcun valore corrispondente a uno degli alias di key ritorna stringa vuota ""
- validate(name)
- ritorna
truese name non è nil ed è il nome di un parametro accettato,falsein caso contrario - errorcomment( content, hidden )
- formatta il commento comment per la visualizzazione, se hidden è
trueil codice sarà inserito ma non visibile salvo analizzare il codice html della pagina, altrimenti sarà formattato come da settaggio delle classi "error" e "citation-comment" nel css (normalmente una scritta in rosso) - seterror( error_id, arguments, raw, prefix, suffix )
- formatta il commento con codice error_id con la tabella di argomenti arguments. Se valorizzati prefix e suffix vengono aggiunti rispettivamente prima e dopo il messggio. Se raw è
trueil messaggio viene ritornato senza essere passato prima per errorcomment. - la chiave error_id fa riferimento alla tabella di messaggi citation_config.error_conditions che per ogni codice di errore restituisce il messaggio da formattare, la categoria di errore in cui inserire la voce e se il messaggio deve essere visibile o nascosto.
Fragment
Per gestire l'unione dei pezzi di citazione, viene definito un "oggetto" Lua (in realtà una tabella con una metatable che definisce alcuni metodi aggiuntivi). Un fragment è composto da un array il cui primo elemento è un stringa da inserire all'inizio della sequenza, seguito da uno o più stringhe e terminati da una stringa da inserire al termine della sequenza. Quando due frammenti f1 e f2 vengono uniti (vedi fragment.append e fragment.appends) viene valutata la priorità dell'ultimo separatore di f1 e quella del primo di f2 e conservato solo quello con priorità maggiore. Il nuovo frammento avrà il separatore iniziale di f1 e quello finale di f2.
- Fragment.new(text, sep_key)
- crea un pseudooggetto Lua che memorizza l'array di stringhe text usando come separatore tra una stringa e l'altra sep_key. Setta come separatore iniziale per la sequenza la stringa nulla e come separatore finale sep_key. Ritorna l'oggetto creato.
- Sep_key deve essere una chiave della tabella Fragment.priority che per ogni separatore indica la sua priorità (quindi quale separatore prevale quando due frammenti vengono uniti) e cosa inserire esattamente (per esempio per "," inserisce in realtà ", " — aggiunge cioè lo spazio). La tabella è caricata dal modulo di configurazione, un esempio è:
[""] = { order=0, sep = ""},[" "] = { order=1, sep = " "},[","] = { order=2, sep = ", "},["."] = { order=3, sep = ". "},["in"] = {order=4, sep = " in "},[" "] = { order=5, sep = " "},spazio semplice che però prevale su altri separatori["nothing"] = {order=6, sep="" }stringa nulla che prevale su tutto (per forzare nessun separatore a inizio citazione)
- Fragment:start(sep_key)
- setta come separatore iniziale sep_key
- Fragment:last(sep_key)
- setta come separatore finale sep_key
- Fragment:empy(sep_key)
- ritorna
truese fragment è un frammento vuoto (contiene un array di stringhe vuoto) - Fragment:append(txr)
- appende il frammento o strigna txr in fondo a fragment (nel caso che txr è una stringa la trasforma in fragment con sep_key uguale a quella del frammento a cui viene appesa)
- Fragment:appends(txr)
- appende un array misto di frammenti/stringhe
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.