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
				cleanArgskey = val
			end
		else
			cleanArgskey = 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 argsprefix and prefix..ii or ii do
		patternsii = argsprefix 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, '