Модуль:Последние запуски 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 = '|%- *style="background:[^"]+"\n| *rowspan="?2"? *| *(%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 = '(|%%- *style="background:[^"]+"\n| *rowspan="?2"? *| *' .. 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