Модуль:Последние запуски Falcon 9 (Bk;rl,&Hkvly;uny [ghrvtn Falcon 9)
Перейти к навигации
Перейти к поиску
Этот модуль оценён как готовый к использованию. Предполагается, что все баги устранены и он готов для широкого использования. Его можно указывать на справочных страницах и рекомендовать к использованию новым участникам. Для его изменения и тестирования, пожалуйста, используйте песочницу. |
Реализация шаблона {{Последние запуски Falcon 9}}, см. его документацию.
local p = {}
function p.main(frame)
local getArgs = require('Модуль:Arguments').getArgs
local args = getArgs(frame)
local currentYear = os.date('*t')['year']
local launchCount = args[1] or 10
local showUpTo = args[2] or currentYear --'декабрь 2016'
local title = mw.title.new( 'Список запусков ракеты-носителя Falcon 9', '' )
local fullContent = title:getContent()
local pattern = '|%- *id="[^"]+" *style="background:[^"]+"\n| *rowspan="?3"? *| *(%d+) *'
local lastLaunchNumber
if fullContent:match(pattern) then --чтобы избежать превышения времени выполнения скрипта в случае ненахождения фрагмента
lastLaunchNumber = fullContent:match('.*' .. pattern)
end
if lastLaunchNumber then
local firstLaunchNumber = lastLaunchNumber - launchCount + 1
--mw.log(firstLaunchNumber)
patternToFormat = '(|%%- *id="[^"]+" *style="background:[^"]+" *\n| *rowspan="?3"? *| *' .. firstLaunchNumber .. '.*|[ %%w]*%s.-)\n\n'
content = mw.ustring.match(fullContent, string.format(patternToFormat, showUpTo))
if not content and showUpTo ~= currentYear then
content = mw.ustring.match(fullContent, string.format(patternToFormat, currentYear))
end
if not content then
content = mw.ustring.match(fullContent, string.format(patternToFormat, currentYear+1))
end
if content then
content = content:gsub('</?onlyinclude>', '')
return frame:preprocess(content)
else
return ''
end
else
return ''
end
end
return p