Module:Taxonbar/whitelist

local p = {}

--returns any combination of strict/lax/all acceptable instance-of's, --either as a table for use inside Module:Taxonbar or another module, --or as an ordered list for use in documentation. function p.whitelist( frame ) local listType = frame.args[1] local documentation = frame.args[2] local outList = {} local acceptableInstanceOf_Strict = { --table order == display order 'Q16521',		--taxon 'Q310890',		--monotypic taxon 'Q47487597',	--monotypic fossil taxon 'Q2568288',		--ichnotaxon 'Q23038290',	--fossil taxon 'Q59278506',	--ootaxon 'Q98961713',	--extinct taxon 'Q58051350',	--paraphyletic group (subclass of taxon) }	local acceptableInstanceOf_Lax = { --table order == display order 'Q42621',		--hybrid 'Q235536',		--incertae sedis 'Q713623',		--clade 'Q848328',		--serotype 'Q857968',		--candidatus 'Q17487588',	--unavailable combination 'Q124477390',	--taxon hypothesis }	if listType == 'strict' then outList = acceptableInstanceOf_Strict elseif listType == 'lax' then outList = acceptableInstanceOf_Lax else --elseif listType == 'all' then --concatenate strict + lax IIF requested local acceptableInstanceOf_All = {} local i = 0 for _, v in pairs( acceptableInstanceOf_Strict ) do			i = i + 1 acceptableInstanceOf_All[i] = v		end for _, v in pairs( acceptableInstanceOf_Lax ) do			i = i + 1 acceptableInstanceOf_All[i] = v		end outList = acceptableInstanceOf_All end if (documentation == nil) or --module only (documentation and documentation == '') then local out = {} for k, v in pairs( outList ) do			out[v] = k --output Q# as keys for easier searching within Module:Taxonbar end return out elseif (documentation == 'docdoc') then --self-documentation only local selfdocout = 'myWhitelist = {\n' for k, q in pairs( outList ) do			selfdocout = selfdocout..'\t\''..q..'\' = '..k..',\n' end selfdocout = selfdocout..'}' local args = { ['lang'] = 'lua', ['code'] = selfdocout } out = frame:expandTemplate{ title = 'Syntaxhighlight', args = args } return out else --normal documentation only local out = '' for _, q in pairs( outList ) do			local Q = frame:expandTemplate{ title = 'Q', args = { q } } out = out..'# '..Q..'\n' end out = mw.ustring.gsub(out, '%s+$', '') return out end end

return p