Нет описания правки |
м (фикс) |
||
Строка 65: | Строка 65: | ||
['font-size'] = fontSize |
['font-size'] = fontSize |
||
}) |
}) |
||
− | :wikitext( '[[Файл:'..image..'| |
+ | :wikitext( '[[Файл:'..image..'|120px|link='..pageName.. |
']]<br />[['..pageName..'|'..characterName..']]' ) |
']]<br />[['..pageName..'|'..characterName..']]' ) |
||
if css then |
if css then |
Версия от 21:32, 20 июля 2021
Для документации этого модуля может быть создана страница Модуль:Статья Персонажи/doc
local articleCharacters = {}
function articleCharacters.articleCreate( frame )
--подготовка
local args = frame.args
local library = require( 'Модуль:Библиотека' )
local parser = library.parser.create({
baseSettingName = 'standart',
actions = {
sequences = 'replace',
separators = 'replace',
textHandler = 'replace'
},
patterns = {
seq2 = ' '
},
separators = {
[1] = { ',', '' }
},
sequences = {
['!'] = '|',
['s:[%S]*'] = '',
['f:[%S]*'] = '',
['c:[%S]*'] = '',
['i:[%S]*'] = '',
['n'] = ''
},
textHandler = function( text, sequences, data )
local pageAndCharacter = library.string.split( text, '|' )
local pageName, characterName = pageAndCharacter[1], pageAndCharacter[2]
if not characterName then
characterName = pageName
end
local image
if sequences['i:[%S]*'] then
image = sequences['i:[%S]*']
else
image = characterName..' СП.png'
end
local blockSize = ''
if sequences['s:[%S]*'] then
blockSize = mw.ustring.sub( sequences['s:[%S]*'], 3 )
else
blockSize = data.blockSize
end
local fontSize = ''
if sequences['f:[%S]*'] then
fontSize = mw.ustring.sub( sequences['f:[%S]*'], 3 )
else
fontSize = data.fontSize
end
local css
if sequences['c:[%S]*'] then
css = mw.ustring.sub( sequences['c:[%S]*'], 3 )
end
local br = ''
if sequences['n'] then
br = '<br />'
end
local characterBox = mw.html.create( 'div' )
characterBox
:addClass( 'articleCharacters_characterBox' )
:css({
['width'] = blockSize,
['font-size'] = fontSize
})
:wikitext( '[[Файл:'..image..'|120px|link='..pageName..
']]<br />[['..pageName..'|'..characterName..']]' )
if css then
characterBox:cssText( css )
end
return br..tostring( characterBox )
end
})
local container = mw.html.create( 'div' )
container:addClass( 'articleCharacters' )
--функции
function headerCreate( name, level, anchor )
local header = mw.html.create( 'div' )
header:addClass( 'articleCharacters_header'..level )
:attr( 'id', anchor )
:wikitext( name )
return header
end
function sectionsCreate( prefix, idPrefix, keyPart, baseParams, rC )
if not rC then
rC = 1
end
local params = {}
local key = prefix..'раздел '..keyPart
if args[key..' ширина боксов'] then
params.blockSize = args[key..' ширина боксов']
else
params.blockSize= baseParams.blockSize
end
if args[key..' размер шрифта'] then
params.fontSize = args[key..' размер шрифта']
else
params.fontSize = baseParams.fontSize
end
local header = headerCreate( args[key..' название'], rC + 1, idPrefix..'_'..args[key..' ид'] )
container:node( header )
if args[key] and args[key] ~= '' then
local characters = parser:parse( args[key], params )
container:wikitext( characters )
end
local hC = 1
while args[key..'.'..hC..' название'] do
sectionsCreate( prefix, idPrefix, keyPart..'.'..hC, params, rC + 1 )
hC = hC + 1
end
end
--программа
local mainCharactersHeader = headerCreate( 'Главные персонажи', 1, 'mainCharacters' )
container:node( mainCharactersHeader )
container:wikitext('<div style="position:relative; margin:auto; width:500px"><div style="opacity: 0.6">[[Файл:ShineBG.png|500px|link=]]</div><div style="position:absolute; top:245px; left:154px; width:150px">[[Файл:MLP_The_Movie_Twilight_Sparkle_official_artwork.png|200px|link=Сумеречная Искорка]]</div><div style="position:absolute; top:80px; left:120px; width:150px">[[Файл:MLP_The_Movie_Rainbow_Dash_official_artwork.png|250px|link=Радуга Дэш]]</div><div style="position:absolute; top: 220px; left:-21px; width:150px">[[Файл:MLP_The_Movie_Rarity_official_artwork.png|170px|link=Рарити]]</div><div style="position:absolute; top:210px; left: 379px; width:150px">[[Файл:MLP_The_Movie_Applejack_official_artwork_2.png|150px|link=Эпплджек]]</div><div style="position:absolute; top:410px; left:300px; width:150px">[[Файл:MLP_The_Movie_Fluttershy_official_artwork.png|150px|link=Флаттершай]]</div><div style="position:absolute; top:410px; left:68px; width:150px">[[Файл:MLP_The_Movie_Pinkie_Pie_official_artwork.png|150px|link=Пинки Пай]]</div><div style="position:absolute; top: 580px; left: 175px; width:150px">[[Файл:MLP_The_Movie_Spike_official_artwork_2.png|100px|link=Спайк]]</div></div>')
local supportingCharactersHeader = headerCreate( 'Второстепенные персонажи', 1, 'supportingCharacters' )
container:node( supportingCharactersHeader )
local sCC = 1
local supportingCharactersParams = {
blockSize = args['второстепенные персонажи ширина боксов'],
fontSize = args['второстепенные персонажи размер шрифта']
}
while args['второстепенные персонажи раздел '..sCC..' название'] do
sectionsCreate( 'второстепенные персонажи ', 'supportingCharacters', sCC, supportingCharactersParams )
sCC = sCC + 1
end
--фоновые персонажи
local bcHeader = headerCreate('Фоновые персонажи', 1, 'backgroundCharacters')
container:node(bcHeader)
--создание подразделов
local bCC = 1
local backgroundCharactersParams = {
blockSize = args['фоновые персонажи ширина боксов'],
fontSize = args['фоновые персонажи размер шрифта']
}
while args['фоновые персонажи раздел '..bCC..' название'] do
sectionsCreate( 'фоновые персонажи ', 'backgroundCharacters', bCC, backgroundCharactersParams )
bCC = bCC + 1
end
return container
end
return articleCharacters