모듈:Selected current events

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 = ' 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)
	local output = 
	local itemIndex = 1
	local maxCount = math.min(#allItems, maxItems)
	while itemIndex ' .. string.gsub(dateString, "(.*) (.*) (.*)", formattedDatePattern) .. ' –'
end
function makeCollapsed(outerText, innerText)
	return " title = " .. outerText .. "" .. innerText .. ""
end
-- Get current events for a "YYYY Month D" date. Returns a table of list items.
function getCurrentEvents(date, mdyDates, keepPatterns, skipPatterns, showWikitext)
	local title = mw.title.new("틀:요즘 화제 처음/" .. date)
	local raw = title:getContent()
	if (not raw) or raw ==  then
		return {}
	end
	local lines = mw.text.split( raw , '\n')
	local items = {}
	local itemHeading = 
	local cleanItemHeading = 
	local previousItemPrefix = 
	local formattedDate = formatDateString(date, mdyDates)
	for i, v in ipairs(lines) do
		local keep = false
		local skip = false
		local isSublistItem = ( string.sub( v, 0, 2 ) == '**' )
		local isListItem = not isSublistItem and ( string.sub( v, 0, 1) == '*' )
		local hasSublistItem = isListItem and i  0 then
				for iii, skipPatt in pairs(skipPatterns) do
					if not skip and ( mw.ustring.find(text, skipPatt) or mw.ustring.find(cleanItemHeading, skipPatt) ) then
						skip = true			
					end
				end
			end
		end
		if keep and not skip then
			local itemPrefix = ";" .. formattedDate
			if itemHeading ~= "" then itemPrefix = itemPrefix .. " "..itemHeading.."" end
			itemPrefix = itemPrefix .. "\n:"
			if previousItemPrefix == itemPrefix then
				itemPrefix = ':'
			else
				previousItemPrefix = itemPrefix
			end
			local item = mw.ustring.gsub(v, '%*+', itemPrefix)
			if showWikitext then
				-- remove html comments
				local itemWikitext = mw.ustring.gsub(item, "%", "")
				-- remove prefix from wikitext
				itemWikitext = mw.ustring.gsub(itemWikitext, ";(.-)\n", "")
				itemWikitext = "" .. mw.text.nowiki( itemWikitext ) .. ""
				-- remove prefix from item
				itemWithoutPrexix = mw.ustring.gsub(v, '%*+', )
				item = itemPrefix .. makeCollapsed(itemWithoutPrexix, itemWikitext)
			end
			table.insert(items, item)
		end
	end
	return items
end
function getItems(maxDays, mdyDates, patterns, skipPatterns, showWikitext)
	local allItems = {}
	local lang = mw.language.new('ko')
	local daysAgo = 0
	while daysAgo < maxDays do
		local day = lang:formatDate('Y년 M월 j일', 'now - '..daysAgo..' days')
		local dailyItems = getCurrentEvents(day, mdyDates, patterns, skipPatterns, showWikitext)
		for i, item in ipairs(dailyItems) do
			table.insert(allItems, item)
		end
		daysAgo = daysAgo + 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("검색 패턴이 설정되지 않음")
	end
	local skipPatterns = getPatterns(args, 'not')
	local days = tonumber(args.days or args'일' or args'일수') or 30
	local mdyDates = args.dates or args'날짜' and string.lower(args.dates or args'날짜') == 'mdy'
	
	local showWikitext = isAffirmed(args.wikitext or args'위키문법')
	local allItems = getItems(days, mdyDates, patterns, skipPatterns, showWikitext)
	if #allItems < 1 then
		return args.header or args'윗글' or args'머리말' and  or args.none or '최근 소식 없음'
	end
	local maxItems = tonumber(args.max or args'최대') or 6
	local more = args.more or args'더보기'
	if isAffirmed(args.more or args'더보기') then
		more = "요즘 화제 더보기..."
	end
	local output = makeOutput(allItems, maxItems, more)
	if args.header or args'윗글' or args'머리말' then
		output = (args.header or args'윗글' or args'머리말') .. '\n' .. output .. '\n' .. (args.footer or args'아랫글' or )
	end
	local needsExpansion = mw.ustring.find(output, '