<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ADYK_checklist</id>
	<title>Module:DYK checklist - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ADYK_checklist"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:DYK_checklist&amp;action=history"/>
	<updated>2026-04-09T16:24:34Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:DYK_checklist&amp;diff=135890&amp;oldid=prev</id>
		<title>imported&gt;WOSlinker: use require(&#039;strict&#039;) instead of require(&#039;Module:No globals&#039;)</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:DYK_checklist&amp;diff=135890&amp;oldid=prev"/>
		<updated>2022-10-22T09:08:16Z</updated>

		<summary type="html">&lt;p&gt;use require(&amp;#039;strict&amp;#039;) instead of require(&amp;#039;Module:No globals&amp;#039;)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module implements {{DYK checklist}}.&lt;br /&gt;
&lt;br /&gt;
-- Load modules&lt;br /&gt;
require(&amp;#039;strict&amp;#039;)&lt;br /&gt;
local yesno = require(&amp;#039;Module:Yesno&amp;#039;)&lt;br /&gt;
local data = mw.loadData(&amp;#039;Module:DYK checklist/data&amp;#039;)&lt;br /&gt;
local responseIcons = data.responseIcons&lt;br /&gt;
local statusIcons = data.statusIcons&lt;br /&gt;
&lt;br /&gt;
-- Template for making collapsed sections.&lt;br /&gt;
local COLLAPSED_WIKITABLE = [[&lt;br /&gt;
{| class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;font-weight:normal; &amp;quot; | %s&lt;br /&gt;
|-&lt;br /&gt;
| %s&lt;br /&gt;
|}]]&lt;br /&gt;
&lt;br /&gt;
-- Template for making uncollapsed sections.&lt;br /&gt;
local UNCOLLAPSED_WIKITABLE = [[&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;border-collapse:collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| %s&lt;br /&gt;
|}]]&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Helper functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Make the given key in args lowercase if when lowercased it equals val.&lt;br /&gt;
local function makeArgLowerCase(args, key, val)&lt;br /&gt;
	if args[key] and string.lower(args[key]) == val then&lt;br /&gt;
		args[key] = val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Normalize the args table to make it easier to work with elsewhere in the&lt;br /&gt;
-- module.&lt;br /&gt;
local function normalizeArguments(args)&lt;br /&gt;
	-- Consolidate aliases&lt;br /&gt;
	args.plagiarismfree = args.plagiarismfree or args.plagarismfree&lt;br /&gt;
	args.plagarismfree = nil&lt;br /&gt;
&lt;br /&gt;
	-- Normalize special values&lt;br /&gt;
	makeArgLowerCase(args, &amp;#039;hookcited&amp;#039;, &amp;#039;agf&amp;#039;)&lt;br /&gt;
	makeArgLowerCase(args, &amp;#039;picfree&amp;#039;, &amp;#039;na&amp;#039;)&lt;br /&gt;
	makeArgLowerCase(args, &amp;#039;qpq&amp;#039;, &amp;#039;na&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- If any of the keys in the keys array are in the table t, return true;&lt;br /&gt;
-- otherwise, return false.&lt;br /&gt;
local function anyKeysInTable(t, keys)&lt;br /&gt;
	for i, key in ipairs(keys) do&lt;br /&gt;
		if t[key] then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Make a wikitext error message.&lt;br /&gt;
local function makeWikitextError(msg)&lt;br /&gt;
	return string.format([[&amp;#039;&amp;#039;&amp;#039;&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;#039;&amp;#039;&amp;#039;]], msg)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Format a user-supplied string for display in error messages.&lt;br /&gt;
-- This prevents input from being displayed as special wiki markup, converts&lt;br /&gt;
-- multi-line strings to a single line, and truncates long strings so that they&lt;br /&gt;
-- are easier to read.&lt;br /&gt;
local function escapeUserString(s)&lt;br /&gt;
	if #s &amp;gt; 28 then&lt;br /&gt;
		s = s:sub(1, 12) .. &amp;#039;...&amp;#039; .. s:sub(-12, -1)&lt;br /&gt;
	end&lt;br /&gt;
	s = s:gsub(&amp;quot;\n&amp;quot;, &amp;quot; &amp;quot;)&lt;br /&gt;
	return mw.text.nowiki(s)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Make a collapsed wikitable with the given header and content. &lt;br /&gt;
local function makeCollapsedWikitable(header, content)&lt;br /&gt;
	return string.format(COLLAPSED_WIKITABLE, header, content)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Make an uncollapsed wikitable with the given content. &lt;br /&gt;
local function makeUncollapsedWikitable(content)&lt;br /&gt;
	return string.format(UNCOLLAPSED_WIKITABLE, content)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Make a bulleted list from an array of strings.&lt;br /&gt;
local function makeBulletedList(items)&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for i, item in ipairs(items) do&lt;br /&gt;
		ret[i] = &amp;#039;* &amp;#039; .. item&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(ret, &amp;#039;\n&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Make a checklist item from the given issue and status.&lt;br /&gt;
local function makeChecklistItem(issue, status, defaultMarker)&lt;br /&gt;
	if not status then&lt;br /&gt;
		return string.format(&amp;#039;%s: %s&amp;#039;, issue, responseIcons.UNKNOWN)&lt;br /&gt;
	elseif yesno(status) then&lt;br /&gt;
		return string.format(&amp;#039;%s: %s&amp;#039;, issue, responseIcons.YES)&lt;br /&gt;
	else&lt;br /&gt;
		return string.format(&lt;br /&gt;
			&amp;#039;%s: %s - %s&amp;#039;,&lt;br /&gt;
			issue,&lt;br /&gt;
			defaultMarker or responseIcons.NO,&lt;br /&gt;
			status&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Return true if all issues have been resolved; return false otherwise.&lt;br /&gt;
-- mainIssues is an array of tables as passed to makeSection. otherIssues is a&lt;br /&gt;
-- string value or nil (again, as passed to makeSection).&lt;br /&gt;
local function allIssuesAreResolved(mainIssues, otherIssues)&lt;br /&gt;
	if otherIssues then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	for i, t in ipairs(mainIssues) do&lt;br /&gt;
		if t.isResolved == false&lt;br /&gt;
			or (&lt;br /&gt;
				t.isResolved ~= true&lt;br /&gt;
				and not yesno(t.status)&lt;br /&gt;
			)&lt;br /&gt;
		then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Assemble a section of the DYK checklist.&lt;br /&gt;
local function makeSection(options)&lt;br /&gt;
	local issues = {}&lt;br /&gt;
&lt;br /&gt;
	-- Add main issues&lt;br /&gt;
	options.mainIssues = options.mainIssues or {}&lt;br /&gt;
	for i, t in ipairs(options.mainIssues) do&lt;br /&gt;
		local checklistItem&lt;br /&gt;
		if t.isResolved then&lt;br /&gt;
			checklistItem = makeChecklistItem(t.issue, t.status, responseIcons.YES)&lt;br /&gt;
		else&lt;br /&gt;
			checklistItem = makeChecklistItem(t.issue, t.status)&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(issues, checklistItem)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add other issues&lt;br /&gt;
	if options.otherIssues then&lt;br /&gt;
		table.insert(issues, makeChecklistItem(&amp;#039;Other problems&amp;#039;, options.otherIssues))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Make the section output.&lt;br /&gt;
	local content = makeBulletedList(issues)&lt;br /&gt;
	if allIssuesAreResolved(options.mainIssues, options.otherIssues) then&lt;br /&gt;
		return makeCollapsedWikitable(options.resolvedHeader, &amp;#039;\n&amp;#039; .. content)&lt;br /&gt;
	else&lt;br /&gt;
		return options.unresolvedHeader .. &amp;#039;\n&amp;#039; .. content&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Section functions&lt;br /&gt;
-- Each of these functions makes a single section of the DYK checklist.&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function makeGeneralEligibilitySection(args)&lt;br /&gt;
	return makeSection{&lt;br /&gt;
		unresolvedHeader = &amp;quot;&amp;#039;&amp;#039;&amp;#039;General eligibility:&amp;#039;&amp;#039;&amp;#039;&amp;quot;,&lt;br /&gt;
		resolvedHeader = &amp;quot;&amp;#039;&amp;#039;&amp;#039;General:&amp;#039;&amp;#039;&amp;#039; Article is new enough and long enough&amp;quot;,&lt;br /&gt;
		mainIssues = {&lt;br /&gt;
			{&lt;br /&gt;
				issue = &amp;#039;[[WP:Did you know#New|New Enough]]&amp;#039;,&lt;br /&gt;
				status = args.newness,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				issue = &amp;#039;[[WP:Did you know#Long enough|Long Enough]]&amp;#039;,&lt;br /&gt;
				status = args.length,&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
		otherIssues = args.eligibilityother,&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makePolicyComplianceSection(args)&lt;br /&gt;
	return makeSection{&lt;br /&gt;
		unresolvedHeader = &amp;quot;&amp;#039;&amp;#039;&amp;#039;Policy compliance:&amp;#039;&amp;#039;&amp;#039;&amp;quot;,&lt;br /&gt;
		resolvedHeader = &amp;quot;&amp;#039;&amp;#039;&amp;#039;Policy:&amp;#039;&amp;#039;&amp;#039; Article is sourced, neutral, and free of copyright problems&amp;quot;,&lt;br /&gt;
		mainIssues = {&lt;br /&gt;
			{&lt;br /&gt;
				issue = &amp;#039;[[WP:Citing sources|Adequate sourcing]]&amp;#039;,&lt;br /&gt;
				status = args.sourced,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				issue = &amp;#039;[[WP:NPOV|Neutral]]&amp;#039;,&lt;br /&gt;
				status = args.neutral,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				issue = &amp;#039;Free of [[Wikipedia:Copyright violations|copyright violations]], [[Wikipedia:Plagiarism|plagiarism]], and [[WP:close paraphrasing|close paraphrasing]]&amp;#039;,&lt;br /&gt;
				status = args.plagiarismfree,&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
		otherIssues = args.policyother,&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeHookEligibilitySection(args)&lt;br /&gt;
	-- Deal with AGF special case for hook citations&lt;br /&gt;
	local hookCiteStatus, isHookSourceAGF&lt;br /&gt;
	if args.hookcited == &amp;#039;agf&amp;#039; then&lt;br /&gt;
		hookCiteStatus = &amp;#039;Offline/paywalled citation accepted in good faith&amp;#039;&lt;br /&gt;
		isHookSourceAGF = true&lt;br /&gt;
	else&lt;br /&gt;
		hookCiteStatus = args.hookcited&lt;br /&gt;
		isHookSourceAGF = nil -- use default behaviour&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Generate output&lt;br /&gt;
	return makeSection{&lt;br /&gt;
		unresolvedHeader = &amp;quot;&amp;#039;&amp;#039;&amp;#039;Hook eligibility:&amp;#039;&amp;#039;&amp;#039;&amp;quot;,&lt;br /&gt;
		resolvedHeader = &amp;quot;&amp;#039;&amp;#039;&amp;#039;Hook:&amp;#039;&amp;#039;&amp;#039; Hook has been verified by provided inline citation&amp;quot;,&lt;br /&gt;
		mainIssues = {&lt;br /&gt;
			{&lt;br /&gt;
				issue = &amp;#039;[[WP:Did you know#Cited hook|Cited]]&amp;#039;,&lt;br /&gt;
				status = hookCiteStatus,&lt;br /&gt;
				isResolved = isHookSourceAGF&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				issue = &amp;#039;Interesting&amp;#039;,&lt;br /&gt;
				status = args.hookinterest,&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
		otherIssues = args.hookother,&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeImageEligibilitySection(args)&lt;br /&gt;
	if args.status&lt;br /&gt;
		and (args.picfree == &amp;#039;na&amp;#039; or not args.picfree)&lt;br /&gt;
		and not args.picused&lt;br /&gt;
		and not args.picclear&lt;br /&gt;
	then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	return makeSection{&lt;br /&gt;
		unresolvedHeader = &amp;quot;&amp;#039;&amp;#039;&amp;#039;Image eligibility:&amp;#039;&amp;#039;&amp;#039;&amp;quot;,&lt;br /&gt;
		resolvedHeader = &amp;quot;&amp;#039;&amp;#039;&amp;#039;Image:&amp;#039;&amp;#039;&amp;#039; Image is freely licensed, used in the article, and clear at 100px.&amp;quot;,&lt;br /&gt;
		mainIssues = {&lt;br /&gt;
			{&lt;br /&gt;
				issue = &amp;#039;[[WP:ICTIC|Freely licensed]]&amp;#039;,&lt;br /&gt;
				status = args.picfree,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				issue = &amp;#039;[[WP:Did you know#Pictures|Used in article]]&amp;#039;,&lt;br /&gt;
				status = args.picused,&lt;br /&gt;
			},&lt;br /&gt;
			{&lt;br /&gt;
				issue = &amp;#039;Clear at 100px&amp;#039;,&lt;br /&gt;
				status = args.picclear,&lt;br /&gt;
			},&lt;br /&gt;
		},&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeQPQSection(args)&lt;br /&gt;
	-- The QPQ section is different enough from the other sections that we&lt;br /&gt;
	-- will just do everything here rather than trying to use the makeSection&lt;br /&gt;
	-- function.&lt;br /&gt;
	local isDone = yesno(args.qpq)&lt;br /&gt;
	if isDone == true then&lt;br /&gt;
		return makeUncollapsedWikitable(&amp;quot;&amp;#039;&amp;#039;&amp;#039;QPQ&amp;#039;&amp;#039;&amp;#039;: Done.&amp;quot;)&lt;br /&gt;
	elseif args.qpq == &amp;#039;na&amp;#039; then&lt;br /&gt;
		return makeUncollapsedWikitable(&amp;quot;&amp;#039;&amp;#039;&amp;#039;QPQ&amp;#039;&amp;#039;&amp;#039;: None required.&amp;quot;)&lt;br /&gt;
	else&lt;br /&gt;
		local ret = makeChecklistItem(&lt;br /&gt;
			&amp;quot;&amp;#039;&amp;#039;&amp;#039;[[Wikipedia:Did you know#QPQ|QPQ]]&amp;#039;&amp;#039;&amp;#039;&amp;quot;,&lt;br /&gt;
			isDone == false and &amp;#039;Not done&amp;#039; or args.qpq&lt;br /&gt;
		)&lt;br /&gt;
		return ret .. &amp;#039;&amp;lt;br /&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeStatusSection(args)&lt;br /&gt;
	if not args.status then&lt;br /&gt;
		return makeWikitextError(&amp;#039;Review is incomplete - please fill in the &amp;quot;status&amp;quot; field&amp;#039;)&lt;br /&gt;
	elseif args.status ~= &amp;#039;y&amp;#039;&lt;br /&gt;
		and args.status ~= &amp;#039;?&amp;#039;&lt;br /&gt;
		and args.status ~= &amp;#039;maybe&amp;#039;&lt;br /&gt;
		and args.status ~= &amp;#039;no&amp;#039;&lt;br /&gt;
		and args.status ~= &amp;#039;again&amp;#039;&lt;br /&gt;
	then&lt;br /&gt;
		return makeWikitextError(string.format(&lt;br /&gt;
			&amp;#039;Invalid status &amp;quot;%s&amp;quot; - use one of &amp;quot;y&amp;quot;, &amp;quot;?&amp;quot;, &amp;quot;maybe&amp;quot;, &amp;quot;no&amp;quot; or &amp;quot;again&amp;quot;&amp;#039;,&lt;br /&gt;
			escapeUserString(args.status)&lt;br /&gt;
		))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	table.insert(ret, &amp;quot;&amp;#039;&amp;#039;&amp;#039;Overall&amp;#039;&amp;#039;&amp;#039;: &amp;quot;)&lt;br /&gt;
	local isOK = yesno(args.status)&lt;br /&gt;
	if isOK == true then&lt;br /&gt;
		if args.hookcited == &amp;#039;agf&amp;#039; then&lt;br /&gt;
			table.insert(ret, statusIcons.YES_AGF)&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(ret, statusIcons.YES)&lt;br /&gt;
		end&lt;br /&gt;
	elseif isOK == false then&lt;br /&gt;
		table.insert(ret, statusIcons.NO)&lt;br /&gt;
	elseif args.status == &amp;#039;?&amp;#039; then&lt;br /&gt;
		table.insert(ret, statusIcons.QUESTION)&lt;br /&gt;
	elseif args.status == &amp;#039;maybe&amp;#039; then&lt;br /&gt;
		table.insert(ret, statusIcons.MAYBE)&lt;br /&gt;
	elseif args.status == &amp;#039;again&amp;#039; then&lt;br /&gt;
		table.insert(ret, statusIcons.AGAIN)&lt;br /&gt;
	end&lt;br /&gt;
	if args.comments then&lt;br /&gt;
		table.insert(ret, &amp;#039; &amp;#039;)&lt;br /&gt;
		table.insert(ret, args.comments)&lt;br /&gt;
	end&lt;br /&gt;
	if args.sign then&lt;br /&gt;
		table.insert(ret, &amp;#039; &amp;#039;)&lt;br /&gt;
		table.insert(ret, args.sign)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(ret)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Exports&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	-- Normalize the args table to make it easier to work with in other&lt;br /&gt;
	-- functions.&lt;br /&gt;
	normalizeArguments(args)&lt;br /&gt;
&lt;br /&gt;
	-- Check whether the review has been started.&lt;br /&gt;
	local params = {&lt;br /&gt;
		&amp;#039;newness&amp;#039;,&lt;br /&gt;
		&amp;#039;length&amp;#039;,&lt;br /&gt;
		&amp;#039;eligibilityother&amp;#039;,&lt;br /&gt;
		&amp;#039;sourced&amp;#039;,&lt;br /&gt;
		&amp;#039;neutral&amp;#039;,&lt;br /&gt;
		&amp;#039;plagiarismfree&amp;#039;,&lt;br /&gt;
		&amp;#039;policyother&amp;#039;,&lt;br /&gt;
		&amp;#039;hookcited&amp;#039;,&lt;br /&gt;
		&amp;#039;hookinterest&amp;#039;,&lt;br /&gt;
		&amp;#039;hookother&amp;#039;,&lt;br /&gt;
		&amp;#039;picfree&amp;#039;,&lt;br /&gt;
		&amp;#039;picused&amp;#039;,&lt;br /&gt;
		&amp;#039;picclear&amp;#039;,&lt;br /&gt;
	}&lt;br /&gt;
	if not anyKeysInTable(args, params) then&lt;br /&gt;
		return &amp;#039;Review not started&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- The review has been started, so assemble all the review sections.&lt;br /&gt;
	local funcs = {&lt;br /&gt;
		makeGeneralEligibilitySection,&lt;br /&gt;
		makePolicyComplianceSection,&lt;br /&gt;
		makeHookEligibilitySection,&lt;br /&gt;
		makeImageEligibilitySection,&lt;br /&gt;
		makeQPQSection,&lt;br /&gt;
		makeStatusSection,&lt;br /&gt;
	}&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for i, func in ipairs(funcs) do&lt;br /&gt;
		table.insert(ret, func(args))&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(ret, &amp;#039;\n&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame, {&lt;br /&gt;
		wrappers = &amp;#039;Template:DYK checklist&amp;#039;,&lt;br /&gt;
	})&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;WOSlinker</name></author>
	</entry>
</feed>