Module:IPA/category documentation

require('strict')

local p = {} local lects = mw.loadData('Module:IPA/data/export') local mLang = require('Module:Lang')

function p.main(frame) local args = {} for k, v in pairs(frame:getParent.args) do		if v ~= '' then args[k] = v		end end local name = mw.title.getCurrentTitle.text:sub(12, -5) local lect, parent local code = args.code if not code then for _, lect2 in ipairs(lects) do			if (lect2.name or lect2.extName) == name then lect = lect2 parent = lect.parent code = lect.code break end end end if not code then code = mLang._tag_from_name({ name }) if code:find('^<span') then code = nil else local regionCode = code:match('-(.+)') if regionCode and regionCode:sub(1, 2) ~= 'x-' then code = code:sub(1, #code - #regionCode) .. regionCode:upper end for _, lect2 in ipairs(lects) do				if lect2.code == code then lect = lect2 parent = lect.parent break end end end end local isCollective = name:find(' languages$') and true local link = lect and (lect.link or lect.generatedLink or lect.extLink) or		parent and (parent.link or parent.generatedLink or parent.extLink) or		isCollective and name or name .. ' language' local key = lect and lect.key or parent and parent.key local langCat, langCatCount if code then langCat = mLang._category_from_tag({ code }) if langCat:find('^<span') then langCat = nil else langCatCount = mw.site.stats.pagesInCategory(langCat:sub(10), 'pages') end end local parentName = args.parent or		parent and (parent.name or parent.extName) or		code and code:find('-') and mLang._name_from_tag({ code:gsub('%-.*', '') }) if parentName == name or		parentName and parentName:find('^<span') then parentName = nil end local cat = args.cat ~= 'no' and (		parentName and 'Pages with ' .. parentName .. ' IPA' or			'Pages with IPA'	) local sortkey = args.sort or name:find('^[ %l]+$') and ' ' .. name or		name local ret = { string.format(			'The following pages contain IPA transcriptions of %s using %s. This category should never be added manually.',			link,			name,			code				and string.format(' ', code)				or 'Template:IPA'		) }	if key then table.insert(ret, string.format( 'By default, the transcriptions are linked to the %s key. Transcriptions that do not adhere to the conventions of the key must have .', key ))	end if isCollective then table.insert(ret, string.format( 'The %s are a language collective. Please replace the code%s with those of more specific languages where possible.', name, code and ' (' .. code .. ')' or '' ))	end if not code and args.container ~= 'yes' then table.insert(ret, string.format( ' Documentation error: language code for "%s" not found. ',			name ))	end if args.content then table.insert(ret, args.content) end if langCat and langCatCount ~= 0 then table.insert(ret, string.format( '==See also==\n*%s (%s)', langCat, mw.language.new('en'):formatNum(langCatCount) ))	end if cat then table.insert(ret, string.format('', cat, sortkey)) end return table.concat(ret, '\n\n') end

return p