Modul: Perioada activității muzicale
Salt la navigare Salt la căutare
Instructiuni de folosire
Acesta este un modul scris în Lua . Următoarele instrucțiuni sunt conținute în sub- formular: Muzică periodică / activități de om ( modificări · istoric )
Sandbox: Formă: Muzică periodică / activități sandbox ( modificări · istoric ) · Test: Formă: Muzică periodică / activități de testare ( modificări · istoric · Executare )
Acesta este un modul scris în Lua . Următoarele instrucțiuni sunt conținute în sub- formular: Muzică periodică / activități de om ( modificări · istoric )
Sandbox: Formă: Muzică periodică / activități sandbox ( modificări · istoric ) · Test: Formă: Muzică periodică / activități de testare ( modificări · istoric · Executare )
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