Mô đun:Selected recent additions

local randomModule = require('Mô đun:Random')

function cleanupArgs(argsTable)
local cleanArgs = {}
for key, val in pairs(argsTable) do
if type(val) == 'string' then
val = val:match('^%s(.-)%s$')
if val ~= then
cleanArgs[key] = val
end
else
cleanArgs[key] = val
end
end
return cleanArgs
end

function isAffirmed(val)
if not(val) then return false end
local affirmedWords = ' thêm đã thêm có đúng bổ sung đã bổ sung xác nhận đã xác nhận add added affirm affirmed include included on true yes y '
return string.find(affirmedWords, ' '..string.lower(val)..' ', 1, true ) and true or false
end

function makeOutput(allItems, maxItems, more, notRandom)
local output
if notRandom then
output =
local itemIndex = 1
local maxCount = math.min(allItems, maxItems)
while itemIndex 0 then
for iii, skipPatt in pairs(skipPatterns) do
if not skip and mw.ustring.find(text, skipPatt) then
skip = true
end
end
end
end
if keep and not skip then
-- remove (pictured) inline note
local cleanItem = mw.ustring.gsub(item, "%s%(.-pictured.-%)", "")
-- remove (illustrated) inline note
cleanItem = mw.ustring.gsub(cleanItem, "%s%(.-illustrated.-%)", "")
if showWikitext then
-- remove html comments
cleanItem = mw.ustring.gsub(cleanItem, "%", "")
local itemWikitext = "" .. mw.text.nowiki( cleanItem ) .. ""
cleanItem = makeCollapsed(cleanItem, itemWikitext)
end
table.insert(items, cleanItem)
end
end
return items
end

function getItems(maxMonths, patterns, skipPatterns, showWikitext)
local allItems = {}
local lang = mw.language.new('vi')
local currentYear = tonumber(lang:formatDate('Y', 'bây giờ'))
local currentMonth = tonumber(lang:formatDate('n', 'bây giờ'))
local monthsAgo = 0
while monthsAgo < maxMonths do
local subpage
if monthsAgo == 0 then
subpage =
else
local year = currentYear - math.modf( (monthsAgo+12-currentMonth)/12 )
local month = math.fmod(12 + currentMonth - math.fmod(monthsAgo, 12), 12)
month = ( month ~= 0 ) and month or 12
subpage = lang:formatDate('/Y/F', year .. '-' .. month)
end
local monthlyItems = getRecentAdditions(subpage, patterns, skipPatterns, showWikitext)
for i, item in ipairs(monthlyItems) do
table.insert(allItems, item)
end
monthsAgo = monthsAgo + 1
end
return allItems
end

function getPatterns(args, prefix)
local patterns = {}
local ii = 1
while args[prefix and prefix..ii or ii] do
patterns[ii] = args[prefix and prefix..ii or ii]
ii = ii + 1
end
return patterns
end

local p = {}

p.main = function(frame)
local parent = frame.getParent(frame)
local parentArgs = parent.args
local args = cleanupArgs(parentArgs)

if args['not'] and not args['not1'] then
args['not1'] = args['not']
end

local patterns = getPatterns(args)
if patterns < 1 then
return error("Mẫu tìm kiếm chưa được thiết lập")
end

local skipPatterns = getPatterns(args, 'not')

local months = tonumber(args.months) or 30

local showWikitext = isAffirmed(args.wikitext)

local allItems = getItems(months, patterns, skipPatterns, showWikitext)
if allItems < 1 then
return args.header and or args.none or 'Không có bổ sung gần đây'
end

local maxItems = tonumber(args.max) or 6

local more = args.more
if isAffirmed(args.more) then
more = "Thêm bổ sung gần đây..."
end

local nonRandom = isAffirmed(args.latest)

local output = makeOutput(allItems, maxItems, more, nonRandom)
if args.header then
output = args.header .. '\n' .. output .. '\n' .. (args.footer or )
end
local needsExpansion = mw.ustring.find(output, '{{', 0, true)
if needsExpansion then
return frame:preprocess(output)
else
return output
end
end

return p