Forma: Proiect

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

Modul care implementează unele caracteristici ale șablonului: Schiță .


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

local p = {}
local getArgs = require ( 'Modul: Argumente' ). getArgs

local function checkForCategories ( str )
local catpattern = "[Cc] [Aa] [Tt] [Ee] [Gg] [Oo] [Rr] [YyIi] [Aa]?"

pentru colonprefix în str : gmatch ( '% [% [* (' .. catpattern .. ') *: * [^% s] [^ \ n ] -%]%]' ) do
local ns = mw . site . namespaces [ colonprefix ]

dacă ns și ns . canonicalName == 'Categorie' atunci
returnează „[[Categorie: Schițe cu categorii care vor fi dezactivate]]”
Sfârșit
Sfârșit
Sfârșit

createRow funcția locală (text1, text2)
întoarce-te mw . html . create ( 'div' )
: addClass ( 'draft-history-row' )
: etichetă ( „div” )
: wikitext ( text1 )
: făcut ()
: etichetă ( „div” )
: wikitext ( text2 )
: făcut ()
: făcut ()
Sfârșit

perechi de funcții locale ByTimestamp ( t )
local a = {}
local i = 0
comp local = funcție ( ts1 , ts2 )
returnează ts1 > ts2
Sfârșit

pentru ts în perechi ( t ) do
table.insert ( a , ts )
Sfârșit

table.sort ( a , comp )

local iter = function ()
i = i + 1
dacă nu un [ i ] atunci
întoarcere
altfel
returnează a [ i ], t [ a [ i ]]
Sfârșit
Sfârșit

returnează iterul
Sfârșit

funcție locală removeFalsePositives ( str )
return str
: gsub ( '<!% -% -.-% -% ->' , '' )
: gsub ( '<nowiki> .- </nowiki>' , '' )
: gsub ( '% f [% {]% ​​{% f [^% {]' , ' \ r ' )
: gsub ( '% {% {* [Cc] ategories * draft *% | .-%}%}' , '' )
Sfârșit

funcție locală de înlocuire ( str , model , înlocuire )
local i , j = str : găsi ( model , 1 , adevărat )
str = str : sub ( 0 , i - 1 ) .. înlocuiți .. str : sub ( j + 1 )
return str
Sfârșit

funcția locală getSubmissions ( storage_submissions , text )
text_nou locală = Text

pentru tmp în text : gmatch ( '% {(% b {})%}' ) do
model local = tmp
depozite_stocate , tmp = getSubmissions ( depozite_stocate , tmp )
text_ nou = înlocuire ( text_ nou , model , tmp )

dacă tmp : găsiți ( '^% {* [Rr] solicitat * revizuire * schiță * [% |%}]' ) atunci
depunere locală = string.format ( '{% s}' , tmp )
text_ nou = înlocuire ( text_ nou , trimitere , '' )
tmp = tmp : gsub ( '% {% b {}%}' , '{{' )
depunere = depunere : gsub ( ' \ r ' , '{' )

local ts = tmp : match ( '% | * ts * = * (% d% d% d% d% d% d% d% d% d% d% d% d% d% d% d) * [% |% }] ' )
cheie locală = tmp : găsiți ( '% | * rezultat * = * [^% s% |%}]' ) și „vechi” sau „curent”

dacă ts atunci
storage_submissions [ key ] [ ts ] = stocate_submissions [ key ] [ ts ] or {}
table.insert ( depuneri_magazinate [ cheie ] [ ts ], trimitere )
Sfârșit
Sfârșit
Sfârșit

reveni stored_submissions, text_nou
Sfârșit

funcția p . principal ( cadru )
local current_title = mw . titlu . getCurrentTitle ()
local ns = current_title . spațiu de nume
text local = current_title : getContent ()

dacă ns == 0 atunci
returnează [[[Categorie: Șterge schița de șablon]] '
altfel, dacă nu textul atunci
întoarcere
altfel
text = removeFalsePositives ( text )
Sfârșit

argumente locale = getArgs ( cadru , { parentOnly = true })
local lang = mw . limba . getContentLanguage ()
trimiteri locale = getSubmissions ({ current = {}, vechi = {} }, text )
local edited_by_reviewer = false

dacă ns == 118 atunci
dacă arg . mută atunci
args [ 1 ] = 'S'
elseif next ( submissions . current ) atunci
args [ 1 ] = 'R'
elseif arg . apoi motivează
args [ 1 ] = 'A'
elseif next ( submissions . old ) atunci
args [ 1 ] = 'N'
altfel
args [ 1 ] = ''
Sfârșit
altfel
args [ 1 ] = lang : ucfirst ( args [ 1 ] sau args . state sau '' )
Sfârșit

if next ( submissions . old ) atunci
local i = 0
local revision_user = frame : preprocess ( '{{REVISIONUSER}}' )
header local = createRow ( 'Data solicitării' , 'Rezultatul revizuirii' )
: addClass ( 'nomobile draft-history-header' )
local history_table = mw . html . create ( 'div' )
: addClass ( 'draft-history' )
local collapsed_submissions = mw . html . create ( 'div' )
: addClass ( 'nomobile mw-collapsible mw-collapsed' )
: attr ( 'data-expandtext' , 'arată cererile anterioare' )
: attr ( 'data-collapsetext' , 'ascunde cererile anterioare' )
local hide_last_submission = args [ 1 ] == 'S' sau args [ 1 ] == 'R'

dacă hide_last_submission atunci
collapsed_submissions : nod ( antet )
altfel
history_table : nod ( antet )
Sfârșit

pentru ts , a in pairsByTimestamp ( submissions . old ) do
succes local , JFY = PCALL (lang. FormatDate, lang, 'j F Y', ts)

dacă succesul atunci
pentru _ , depunere în ipairs ( a ) do
recenzent local
dacă nu edited_by_reviewer atunci
recenzent = trimitere : potrivire ( '% | * utilizator * = * (.-) * [% |%}]' )
edited_by_reviewer = revision_user == recenzor
Sfârșit
root local = history_table
i = i + 1
depunere = depunere : gsub ( '%}%} $' , '| arată rezultatul = x}}' )
dacă i == ( hide_last_submission și 1 sau 2 ) atunci
history_table : nod ( colapsed_submissions )
Sfârșit
dacă i > ( hide_last_submission și 0 sau 1 ) atunci
rădăcină = depuneri_coloase
Sfârșit
dacă i == 1 și nu hide_last_submission atunci
args [ 'ts ultima revizuire' ] = ts
depunere = depunere : gsub ( '%}%} $' , '| arată butonul = x}}' )
Sfârșit
rădăcină : nod ( createRow ( jFY , cadru : preproces ( depunere )))
Sfârșit
Sfârșit
Sfârșit

args [ 'numărul de cereri respinse' ] = i
args [ 'revision history'] = tostring ( history_table )
Sfârșit

dacă edited_by_reviewer sau args [ 1 ] == 'R' sau args [ 1 ] == 'S' atunci
args [ 'show button' ] = 'nu'
altfel
args [ 'show button' ] = 'da'
Sfârșit

retur cadru : extensionTag {
nume = 'șabloane' ,
args = { src = 'Modul: Draft / styles.css' }
} .. cadru : expandTemplate {
title = 'Șablon: Proiect / Notificare' ,
args = args
} .. ( ns == 118 și verificațiPentruCategorii ( text ) sau '' )
Sfârșit

retur p