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

Modul: Perioada activității muzicale

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

Modul pentru a susține șablonul {{ Artist muzical }} pentru a genera rândul „Perioada activității muzicale” și clasificarea acestuia, începând de la parametrii „începutul anului de activitate N”, „sfârșitul anului de activitate N” și „nota perioadei de activitate N ".

Are o subpagină de configurare: Modul: Perioadă de activitate muzicală / Configurare .


 - [[
* Modul pentru a susține șablonul Artist muzical pentru a genera rândul
* „Perioada activității muzicale” și clasificarea acesteia, începând de la
* parametrii „începutul anului activității N”, „sfârșitul anului activității N” și „nota perioadei activității N”.
]] -

require ( „Formular: fără globali” )

local getArgs = require ( 'Modul: Argumente' ). getArgs
local cfg = mw . loadData ( „Modul: perioada activității muzicale / Configurare” )
local errorCategory = 'Voci cu șablon Artist muzical cu perioadă greșită'
local trackingCategory = 'Voci cu șablon Artist muzical cu perioadă de activitate cu un singur an'
local maxIntervals = 10

- Verificați dacă deceniul este în formatul acceptat „ani nnnn” și cu o valoare permisă.
-
- @param {string} valoare
- @return {șir} șirul nemodificat sau nul dacă nu este un deceniu valid
funcția locală este Decadă ( valoare )
returnează valoarea și ( valoare : potrivire ( '^ 19 ani [0-9] 0 $' ) sau valoare : potrivire ( '^ 20 ani [0-2] 0 $' ))
Sfârșit

- Parsificați parametrii referitori la perioada activității muzicale:
- „anul începerii activității N”, „anul încheierii activității N” și „notele perioadei de activitate N”.
-
- @param {table} args
- @return {table} secvență Lua cu elemente cu tastele „start”, „sfârșit”
- („sfârșitul” este un cuvânt rezervat) și „note”
funcție locală parseArgs ( args )
local ret = {}

pentru i = 1, maxIntervals do
local n = i == 1 și '' sau ( '' .. i )
interval local = {
start = args [ „anul începerii activității” .. n ],
end = args [ „anul sfârșitului activității” .. n ],
notă = args [ „notă perioadă de activitate” .. n ]
}
dacă interval . început sau interval . terminându-se atunci
table.insert ( ret , interval )
altceva
pauză
Sfârșit
Sfârșit

retur ret
Sfârșit

- Formatați valoarea parametrului „anul de început” al primului interval.
-
- @param {string} valoare
- @param {table} confCat
- @return {string} valoarea formatată
- @return {string} eventuala categorie pentru anul constituirii artistului
format funcție locală StartYear ( valoare , confCat )
local ret , cat
dacă isDecade ( valoare ) atunci
ret = string.format ( '[[% s]]' , valoare )
elseif tonumber ( valoare ) atunci
cat = confCat . start și ( confCat . start .. '' .. valoare ) sau zero
ret = cat și string.format ( '[[: Categorie:% s |% s]]' , cat , valoare ) sau string.format ( '[[% s]]' , valoare )
altceva
cat = confCat . start_absent
ret = valoare sau '?'
Sfârșit
return ret , cat
Sfârșit

- Formatați valoarea parametrului „sfârșitul anului de activitate” al ultimului interval.
-
- @param {string} valoare
- @param {table} confCat
- @return {string} valoarea formatată
- @return {string} eventuala categorie pentru anul dizolvării artistului
format funcție locală EndYear ( valoare , confCat )
local ret , cat
dacă isDecade ( valoare ) atunci
ret = string.format ( '[[% s]]' , valoare )
elseif valoare == 'în activitate' atunci
cat = confCat . inactivitate
ret = cat și string.format ( '[[: Categorie:% s |% s]]' , pisică , valoare ) sau valoare
elseif tonumber ( valoare ) atunci
cat = confCat . fine și ( confCat . fine .. '' .. valoare ) sau zero
ret = cat și string.format ( '[[: Categorie:% s |% s]]' , cat , valoare ) sau string.format ( '[[% s]]' , valoare )
altceva
cat = confCat . end_absent
ret = valoare sau '?'
Sfârșit
return ret , cat
Sfârșit

- ================================================== ============================
- Funcții exportate
- ================================================== ============================

local p = {}

- Funcție pentru {{#invoke: perioada activității muzicale | principal}}
funcția p . principal ( cadru )
argumente locale = getArgs ( cadru , { parentOnly = false })
Intervale formatate local , categorii = {}, {}
local ns0 = mw . titlu . getCurrentTitle (). spațiu de nume == 0
local sepCat = args . depanare și „<br />” sau „”
local singleYear = false

- categorii configurate pentru „tipul de artist” necesar
local artist_type = args [ 'artist type' ] și mw . ustring . mai mici ( args [ „tip artist” ]) sau zero
confCat local = cfg . categorii [ cfg . alias [ artist_type ] sau artist_type ] sau cfg . categorii . Mod implicit

- analizați intervalele necesare
intervale locale = parseArgs ( args )

- formatați intervalele obținute
pentru idx , interval în ipairs ( intervale ) do
 început local , sfârșit , pisică , formatat Interval
dacă idx == 1 atunci
start , cat = formatStartYear ( interval . start , confCat )
table.insert ( categorii , pisică )
elseif tonumber ( interval . start ) sau isDecade ( interval . start ) atunci
start = string.format ( '[[% s]]' , interval . start )
intervalul elseif . începe atunci
start = string.format ( '<span class = "error"> anul de începere% s nevalid </span>' , idx )
table.insert ( categorii , errorCategory )
altceva
start = '?'
Sfârșit

dacă idx == # intervale atunci
end , cat = formatEndYear ( interval . end , confCat )
table.insert ( categorii , pisică )
elseif tonumber ( interval . sfârșit ) sau isDecade ( interval . sfârșit ) atunci
ending = string.format ( '[[% s]]' , interval . finale )
intervalul elseif . încheindu-se atunci
ending = string.format ( '<span class = "error"> anul de activitate de activitate% s nevalid </span>' , idx )
table.insert ( categorii , errorCategory )
altceva
sfârșitul = '?'
Sfârșit

- dacă există mai multe și start = end generează un singur link
dacă # intervale > 1 și interval . start == interval . terminându-se atunci
formatatInterval = idx == 1 și începutul sau sfârșitul
singleYear = adevărat
altceva
formattedInterval = string.format ( '% s & nbsp; - & nbsp;% s' , început , sfârșit )
Sfârșit

dacă interval . notează atunci
local fmt = interval . notă : sub ( 1 , 1 ) == string.char ( 127 ) și
'% s <small>% s </small>' sau '% s <small> (% s) </small>'
formatatInterval = șir.format ( fmt , formatatInterval , interval . notă )
Sfârșit
table.insert ( formattedIntervals , formattedInterval )
Sfârșit

dacă # intervale > 1 atunci
dacă confCat . intermediari atunci
table.insert (categorii, confCat. intermediar)
Sfârșit
dacă este singură An, atunci
table.insert ( categorii , trackingCategory )
Sfârșit
Sfârșit

pentru i = 1 , se fac # categorii
categorii [ i ] = string.format ( '[[% sCategorie:% s]]' , argumente . depanare și ':' sau '' , categorii [ i ])
Sfârșit

return table.concat ( formatatIntervale , '<br />' ) .. sepCat ..
(( ns0 sau args . debug ) și table.concat ( categorii , sepCat ) sau '' )
Sfârșit

retur p