Дополнительные действия
Этому шаблону не хватает документации. Вы можете помочь проекту, сделав описание шаблона: что он делает, как его использовать, какие параметры он принимает. Это поможет другим использовать его. Для оформления можете воспользоваться {{doc}} или {{doc-inline}}. Не забывайте помещать описание внутрь <noinclude></noinclude>. P.S. Также не забываем про категорию. |
local Infobox = {}
-------------------------------------
-- Библиотеки и глобальные функции --
-------------------------------------
-- обозначает высокочастотный
local HF = require('Module:HF')
-- Анализирует параметры вызова и шаблона, удаляет пробелы и удаляет пробелы.
local getArgs = require('Module:Arguments').getArgs
-- Функции MediaNav
local MN = require('Module:HF/MediaNav')._MediaNav
-- Вспомогательные функции (локальные, чтобы не беспокоиться о пространствах имен)
local mediaDebutList = require('Module:HF/Infobox').mediaDebutList
-- Заголовок любой страницы, вызывающей функцию
local pageTitle = mw.title.getCurrentTitle().text
-----------------------------------------------------------
-- Локальные функции (используются только в этом модуле) --
-----------------------------------------------------------
-- Нет.
---------------------------------------------------------
-- Открытые функции (вызываются из шаблона или статьи) --
---------------------------------------------------------
function Infobox.titleEpisode(frame)
local args = getArgs(frame)
if mw.title.getCurrentTitle().isContentPage == true then
local out = {}
table.insert( out, HF.Category('Эпизоды аниме по алфавиту') )
--local _editFormURL = mw.html.create('span')
-- :css('float','right'):css('font-size','x-small')
-- :wikitext( HF.Link('Special:FormEdit/Episode/' .. pageTitle, 'edit') ):allDone()
--local editFormURL = tostring(_editFormURL)
if args['название'] then
mw.smw.set{ ['Название'] = args['название'], ['Названия'] = args['название'] }
table.insert( out, ('%s'):format(mw.text.trim(args['название']:match('[^(]*'))) )
else
mw.smw.set {
['Название'] = tostring(pageTitle:match("[^(]*"):gsub(''',"'")),
['Названия'] = pageTitle:match("[^(]*")
}
table.insert( out, ('%s'):format(mw.text.trim(pageTitle:match('[^(]*'))) )
end
--if args['english'] then
-- mw.smw.set {
-- ['English name'] = args['english'],
-- ['Names'] = args['english']
-- }
--end
if args['кандзи'] then
mw.smw.set {
['Кандзи'] = args['кандзи'],
['Названия'] = args['кандзи']
}
else
mw.smw.set{ ['Обслуживание'] = 'Кандзи' }
end
if args['киридзи'] then
mw.smw.set {
['Киридзи'] = args['киридзи'],
['Названия'] = args['киридзи']
}
end
if not args['арка'] then mw.smw.set{ ['Несобранные'] = 'Да' } end
return table.concat( out ) .. ( args['ref'] or '' )
elseif mw.title.getCurrentTitle().namespace == 10
and not pageTitle:match('/testcases') then
return nil
else
return ( args['название'] and args['название']:match('[^(]*') ) or pageTitle:match("[^(]*")
end
end
-- Предыдущий эпизод
function Infobox.episodePrevious (frame)
local args = getArgs(frame)
local previous =
MN {
'Эпизод', args['эпизод'], '-1',
['боруто'] = args['боруто аниме'], ['ураганные хроники'] = args['ураганные хроники']
}
return previous and ('%s'):format( previous ) or nil
end
-- Текущий эпизод
function Infobox.episodeEpisode (frame)
local args = getArgs(frame)
mw.smw.set { ['Эпизод номер'] = args['эпизод'] }
local affix = args['watchonlinelink']
and (' <sup>([http://www.crunchyroll.com/media-%s Смотреть онлайн])</sup>')
:format( args['watchonlinelink'] )
or ''
if args['боруто аниме'] == 'Да' then
mw.smw.set { ['Аниме'] = 'Боруто: Новое поколение Наруто' }
return ("''Боруто'' #%s"):format( args['эпизод'] ) .. affix
elseif args['ураганные хроники'] == 'Да' then
mw.smw.set { ['Аниме'] = 'Наруто: Ураганные хроники' }
return ("''Наруто: Ураганные хроники'' #%s"):format( args['эпизод'] ) .. affix
else
mw.smw.set { ['Аниме'] = 'Наруто' }
return ("''Наруто'' #%s"):format( args['эпизод'] ) .. affix
end
end
-- Следующий эпизод
function Infobox.episodeNext (frame)
local args = getArgs(frame)
local nextepisode =
MN {
'Эпизод', args['эпизод'], '1',
['боруто'] = args['боруто аниме'], ['ураганные хроники'] = args['ураганные хроники']
}
return nextepisode and ('%s'):format( nextepisode ) or nil
end
--Манга
function Infobox.episodeManga (frame)
local args = getArgs(frame)
local out = {}
local chapters = mw.text.split( args['главы'], ',%s*' )
if args['боруто'] == 'Да' then
mw.smw.set { ['Манга'] = 'Боруто: Новое поколение Наруто (манга)' }
else
mw.smw.set { ['Манга'] = 'Наруто (манга)' }
end
for _,v in ipairs( chapters ) do
mw.smw.set { ['Глава манги'] = mw.text.trim(v) }
local chapter = tonumber(mw.text.trim(v)) and
MN {
'Глава', mw.text.trim(v),
['DisplayType'] = 'Number', ['боруто'] = args['боруто']
}
if chapter then table.insert( out, chapter ) end
end
return table.concat( out, ', ' )
end
--Персонажи
function Infobox.episodeCharacters( frame )
local args = getArgs(frame)
local Boruto = args['боруто аниме'] == 'Да' and true or nil
local Shippuden = args['ураганные хроники'] == 'Да' and true or nil
local number = tonumber( args['эпизод'] or 0 ) + ( Boruto and 720 or ( Shippuden and 220 or 0 ) )
local query =
mw.smw.ask {
HF.Link( ('Категория:Персонажи аниме «%s»'):format(
(Boruto == true and 'Боруто: Новое поколение Наруто' or
(Shippuden == true and 'Наруто: Ураганные хроники'
or 'Наруто')
)
) ),
( HF.Link('Дебют в аниме::%s') ):format( number ),
'?Обслуживание',
'mainlabel=main'
}
return mediaDebutList ( query )
end
-- Дзюцу
function Infobox.episodeJutsu( frame )
local args = getArgs(frame)
local Boruto = args['боруто аниме'] == 'Да' and true or nil
local Shippuden = args['ураганные хроники'] == 'Да' and true or nil
local number = tonumber( args['эпизод'] or 0 ) + ( Boruto and 720 or ( Shippuden and 220 or 0 ) )
local query =
mw.smw.ask {
HF.Link('Категория:Дзюцу по алфавиту'),
( HF.Link('Дебют в аниме::%s') ):format( number ),
'?Обслуживание',
'mainlabel=main'
}
return mediaDebutList ( query )
end
-- Предметы
function Infobox.episodeTools( frame )
local args = getArgs(frame)
local Boruto = args['боруто аниме'] == 'Да' and true or nil
local Shippuden = args['ураганные хроники'] == 'Да' and true or nil
local number = tonumber( args['эпизод'] or 0 ) + ( Boruto and 720 or ( Shippuden and 220 or 0 ) )
local query =
mw.smw.ask {
HF.Link('Категория:Предметы по алфавиту'),
( HF.Link('Дебют в аниме::%s') ):format( number ),
'?Обслуживание',
'mainlabel=main'
}
return mediaDebutList ( query )
end
-- Команды
function Infobox.episodeTeams( frame )
local args = getArgs(frame)
local Boruto = args['боруто аниме'] == 'Да' and true or nil
local Shippuden = args['ураганные хроники'] == 'Да' and true or nil
local number = tonumber( args['эпизод'] or 0 ) + ( Boruto and 720 or ( Shippuden and 220 or 0 ) )
local query =
mw.smw.ask {
HF.Link('Категория:Команды по алфавиту'),
HF.Link('Появляется в::Аниме'),
( HF.Link('Дебют в аниме::%s') ):format( number ),
'?Обслуживание',
'mainlabel=main'
}
return mediaDebutList ( query )
end
-------------------------------------------------------------------
-- Экспортируемые функции (используются в этом и других модулях) --
-------------------------------------------------------------------
-- Нет.
----------------------------------------------
-- Вывод (отправьте его обратно как угодно) --
----------------------------------------------
return Infobox