Module:Header/attribution data

local function anon(text) text = text or 'Anonymous' local cat = '' if mw.title.getCurrentTitle:inNamespaces(0, 114) then cat = '' end return  .. text ..  .. cat end

local function anon_nocat(text) return  .. (text or 'Anonymous') ..  end

local contrib_types = { {noun = 'author', prefix = 'by'}, {noun = 'attributed to', prefix = 'attributed to', special_cases = {}}, {noun = 'adapter', prefix = 'adapted by'}, {noun = 'abridger', prefix = 'abridged by'}, {noun = 'illustrator', prefix = 'illustrated by'}, {noun = 'director', prefix = 'directed by'}, {noun = 'lyricist', prefix = 'lyrics by'}, {noun = 'librettist', prefix = 'libretto by'}, {		noun = 'book by', prefix = 'book by', special_cases = { ['?'] = 'unknown author', ['unknown'] = 'unknown author', ['not mentioned'] = 'unknown author', ['anon'] = anon, ['anonymous'] = anon, ['various'] = 'various authors' }	},	{noun = 'composer', prefix = 'composed by'}, {noun = 'arranger', prefix = 'arranged by'}, {		noun = 'translator', prefix = 'translated by', special_cases = { ['?'] = 'unknown translator', ['unknown'] = 'unknown translator', ['not mentioned'] = 'unknown translator', ['anon'] = anon, ['anonymous'] = anon, ['various'] = 'various translators', ['wikisource'] = 'Wikisource' }	},	{		noun = 'editor', prefix = 'edited by', special_cases = { ['?'] = 'unknown editor', ['unknown'] = 'unknown editor', ['not mentioned'] = 'unknown editor', ['anon'] = anon_nocat, ['anonymous'] = anon_nocat, ['various'] = 'various editors' }	} }

for i = 1, #contrib_types do	local noun = contrib_types[i]['noun'] contrib_types[i]['param_name'] = contrib_types[i]['param_name'] or string.gsub(noun, ' ', '-') contrib_types[i]['special_cases'] = contrib_types[i]['special_cases'] or { ['?'] = 'unknown ' .. noun, ['unknown'] = 'unknown ' .. noun, ['not mentioned'] = 'unknown ' .. noun, ['anon'] = anon, ['anonymous'] = anon, ['various'] = 'various ' .. noun .. 's'	} contrib_types[i]['index'] = i end

return contrib_types