Această pagină este protejată de mișcare
Această pagină este protejată

Formă: Piste

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Acest modul servește în sprijinul șablonului: piese pentru a permite inserarea unui număr nelimitat de piese.

Consultați manualul șablonului pentru utilizare.


 categorii locale = {}
local discontinuous_num = '[[Categorie: Elemente cu șabloane Piste cu numerotare discontinuă]]'
local missing_title = '[[Categorie: Voci cu șabloane Melodii cu titlu lipsă]]'
local expected_markup = '[[Categorie: Elemente cu șabloane Piste cu marcaj neașteptat]]'
local unknown_format = '[[Categorie: Voci cu șabloane Piste cu format de durată necunoscut]]'

- Protejează un șir care va fi înfășurat cu marcare cursivă wiki '' ... ''
funcție locală safeforitalics ( str )
if str : sub ( 1 , 1 ) == "'" then str = "<span> </span>" .. str end
if str : sub ( - 1 , - 1 ) == "'" then str = str .. "<span> </span>" end
return str
Sfârșit

- Calculați și formatați durata unei piese
funcția locală getTrackLength ( args , i )
local string_durata = args [ "Duration" .. i ]
minute locale , secunde
dacă string_duration atunci
string_minutes locale, string_seconds = mw. ustring . match ( string_duration , "^ (% d +): (% d% d) $" )
minute = tonumber ( string_minuti )
secunde = tonumber ( string_seconds )
altceva
minute = tonumber ( args [ "Minutes" .. i ])
secunde = args [ "Secunde" .. i ] și mw . ustring . match ( args [ "Secunde" .. i ], "^% d% d? $" ) și
tonumber ( args [ "Secunde" .. i ])
Sfârșit
durata locală = ( minute sau 0 ) * 60 + ( secunde sau 0 )
if ( string_duration and duration == 0 ) or ( not minutes and args [ "Minutes" .. i ]) sau
( nu secunde și argumente [ „Secunde” .. i ]) atunci
categories [ # categories + 1 ] = format_necunoscut
Sfârșit
durata returnării , durata > 0 și string.format ( "% d:% 02.f" , minute sau 0 , secunde sau 0 ) sau zero
Sfârșit

- [[
Acesta primește o listă de parametri și indexul grupului de parametri care urmează să fie compus
într-o pistă
]] -

pista funcției locale ( args , i , durata )
local title = args [ "Title" .. i ]
elemente rând_locale = {}
table.insert ( row_elements , '<li value = "' .. tostring ( i ) .. '">' )
interpret local = args [ "Interpret" .. i ]
dacă interpret, atunci table.insert ( rând_elemente , interpret .. "-" ) sfârșit
italic local = args [ "Italic" ] ~ = "nu" și adevărat sau fals
italice = ( italice and args [ "Italics" .. i ] ~ = "no" ) or
( nu cursiv și ( args [ "italic" .. i ] == "da" sau args [ "italic" .. i ] == "da" ))
dacă titlu : găsiți ( italic și "''" sau "'' '" ) atunci
categorii [ # categorii + 1 ] = marcaj_neașteptat
Sfârșit
dacă cursiv atunci
title = "''" .. safeforitalics ( title ) .. "''"
Sfârșit
table.insert ( rând_elemente , titlu )
local featuring = args [ "Featuring" .. i ]
dacă se prezintă atunci table.insert ( row_elements , "<small> (feat." .. featuring ... ") </small>" ) end
local note = args [ "Note" .. i ]
dacă notă, atunci table.insert ( row_elements , "<small> (" .. note .. ") </small>" ) end
dacă durata atunci
table.insert ( rând_elemente , "-" )
table.insert ( elemente_rând , durată )
Sfârșit
local Text Author = args [ "Text Author" .. i ]
local AutoreMusica = args [ "Music author" .. i ]
local AutoreTestoeMusica = args [ "Autor versuri și muzică" .. i ]
edizioni locale = args [ "Edizioni" .. i ]
author_no local = false
dacă Text Author și Music atunci
table.insert ( row_elements , "<small> (" .. AuthorTextandMusic )
elseif AuthorText atunci
table.insert ( row_elements , "<small> (text:" .. AuthorText )
dacă Music Author atunci
table.insert ( row_elements , "- music:" .. AuthorMusic )
Sfârșit
elseif AuthorMusic atunci
table.insert ( row_elements , "<small> (music:" .. AuthorMusic )
altceva
no_author = adevărat
Sfârșit
dacă atunci edițiile
dacă nu_autor atunci
table.insert ( rând_elemente , "<small> (" )
altceva
table.insert ( rând_elemente , ";" )
Sfârșit
table.insert ( rând_elemente , "ediții muzicale" .. ediții .. ") </small>" )
elseif nu no_author atunci
table.insert ( row_elements , ") </small>" )
Sfârșit
local extra = args [ "Extra" .. i ]
dacă este extra, atunci table.insert ( rând_elemente , "-" .. extra ) se termină
table.insert ( rând_elemente , "</li> \ n " )
local MedleyList = args [ "MedleyList" .. i ]
dacă MedleyList atunci table.insert ( row_elements , '<div style = "padding: 0.3em 0px 0.5em 2.5em;"> \ n ' .. MedleyList .. '</div>' ) end
return tabel.concat ( rând_elemente ), durata
Sfârșit

- [[
Ia un tabel de parametri și returnează un șir care conține
ieșirea care trebuie introdusă în intrare
]] -
funcție locală compose_tracks ( args )
- matrice pentru a acumula rândurile listei pe măsură ce sunt procesate
piese locale = {}
- compune antetul listei de melodii
header local = ""
author_no local = false
authorTestoeMusica locale = args [ „Autor de versuri și muzică“]
dacă authorText și Music atunci
testata = "Texte și muzică de" .. autoreTestoeMusica
altceva
local autoreTesti, autoreMusiche = args [ " Textele autorului "], args [ " Muzica autorului "]
dacă authorText atunci
testata = "Texte by" .. autoreTesti
if authorMusiche then testata = testata .. ", music by" .. authorMusiche end
elseif autor Muzică atunci
testata = "Music by" .. autoreMusiche
altceva
no_author = adevărat
Sfârșit
Sfârșit
ediții locale = args [ "Ediții" ]
dacă atunci edițiile
dacă nu_autor atunci
testata = " Ediții muzicale" .. ediții .. "."
altceva
testata = testata .. "; ediții muzicale" .. ediții .. "."
Sfârșit
elseif nu no_author atunci
header = header .. "."
Sfârșit
table.insert ( piese , antet )
- compune lista parametrilor
table.insert ( piese , "<ol>" )
local visualizza_durata = args [ "Vizualizați timpul total "]
durata locală = 0
local sum_duration = false
dacă visualizza_durata == "da" sau visualizza_durata == "da" atunci somma_durata = adevărat sfârșit
numere locale = {}
local valid_nums = {}
pentru k , v în perechi ( args ) do
prefix local , num = string.match ( k , '^ (% D +) ([0-9] +) $' )
dacă num și ( num == '0' sau num : sub ( 1 , 1 ) ~ = '0' ) atunci
- dacă numărul este schimbat cu numărul, este prea mare
num = tonumber ( num )
dacă nu args [ 'Title' .. num ] atunci
categorii [ # categorii + 1 ] = lipsă_titlu
Sfârșit
dacă args [ prefix .. num ] și nu validate_nums [ num ] atunci
validated_nums [ num ] = adevărat
table.insert ( nums , num)
Sfârșit
Sfârșit
Sfârșit
table.sort ( nums )
dacă # nums == 0 atunci
categorii [ # categorii + 1 ] = lipsă_titlu
- categorie de urmărire dacă numerotarea pieselor este discontinuă
elseif nums [1] + # nums - 1 ~ = nums [# nums] atunci
categorii [ # categorii + 1 ] = discontinous_num
Sfârșit
urme locale = false
- extrage piesele din parametri și introduce valorile în tabelul pieselor
pentru k, num ipairs ( nums ) do
local track_time , formatted_time = getTrackLength ( args , num )
if args [ 'Title' .. num ] atunci
urme = true
local new_track = track ( args , num , formatat_timp )
table.insert ( piese , new_track )
Sfârșit
dacă somma_durata atunci duration = durata + durata_track end
Sfârșit
table.insert ( piese , "</ol>" )
dacă sum_duration atunci
table.insert ( piese , "Durata totală:" .. string.format ( "% d:% 02.f" , math.floor ( durata / 60 ) , durata % 60 ) .. "</p>" )
Sfârșit
local ns = mw . titlu . getCurrentTitle (). spațiu de nume
return ( piese și table.concat ( piese , " \ n " ) sau '' ) .. ( ns == 0 și table.concat ( categorii ) sau '' )
Sfârșit

local p = {}

- [[
Funcție de interfață cu șablon: Piste
Citește parametrii și îi plasează în tabelul args, care apoi trece la compose_tracks
pentru procesare
]] -
funcția p . piese ( cadre )
- obțineți parametrii șablonului original
local pframe = frame : getParent ()
- extrage toți parametrii și îi stochează într-un tabel
argumente locale = {}
pentru k , v în perechi ( pframe . args ) do
dacă v ~ = nul și v ~ = " atunci
args [ k ] = v
Sfârșit
Sfârșit
returnează compose_tracks ( args )
Sfârșit

- Tabel de conversie pentru parametrii en: template: Track_listing neindexat
tabel_conversie local = {
[ 'all_writing' ] = 'Autor de versuri și muzică' ,
[ 'all_lyrics' ] = 'Autor text' ,
[ 'all_music' ] = 'Autor muzical' ,
[ 'total_length' ] = 'Afișează durata totală'
}

- Tabel de conversie pentru parametrii en: template: Indexed track_listing
local conversion_table_index = {
[ 'title' ] = 'Title' ,
[ 'note' ] = 'Note' ,
[ 'music' ] = 'Autor muzical' ,
[ 'writer' ] = 'Autor de text și muzică' ,
[ 'lyrics' ] = 'Autor text' ,
[ 'length' ] = 'Durată' ,
[ 'extra' ] = 'Extra'
}

- [[
Funcția de interfață cu șablonul: Track_listing
Citiți parametrii, convertiți-i în parametrii șablon corespunzători: Piste
și le plasează în tabelul args, care apoi trece la compose_tracks
pentru procesare
]] -
funcția p . en_tracks ( cadru )
local pframe = frame : getParent ()
- extrage toți parametrii și îi stochează într-un tabel (pframe returnează un pseudotabil, consultați documentația)
argumente locale = {}
jurnal local = {}
pentru k , v în perechi ( pframe . args ) do
dacă v ~ = nul și v ~ = " atunci
if conversion_table [ k ] then - Verifică dacă este un parametru neindexat
args [ conversion_table [ k ]] = v
altceva
- extrageți numele de bază și indexul, dacă k = title1 atunci prefix = title și num = 1
prefix local , num = string.match ( k , "^ (% D +) (% d +) $" )
if prefix and conversion_table_table_index [ prefix ] atunci - verificați dacă este un parametru indexat
args [ conversion_table_index [ prefix ] .. num ] = v
elseif not num atunci - nici măcar un parametru indexat, copiați-l așa cum este
args [ k ] = v
Sfârșit
Sfârșit
Sfârșit
Sfârșit
dacă args [ 'Afișează durata totală' ], atunci args [ 'Afișează durata totală' ] = 'da' sfârșit
returnează compose_tracks ( args ) - table.concat (jurnal, '\ n *') -
Sfârșit

retur p