Module:Bac à sable/Lowercase

 Documentation[créer] [purger]
local p = {}

local nomsDataLangue = {}
for k, v in pairs( mw.loadData( 'Module:Langue/Data' ) ) do
	nomsDataLangue[ #nomsDataLangue + 1 ] = v.nom
end

local languageNames = {}
for k, v in pairs( mw.language.fetchLanguageNames() ) do
	languageNames[ #languageNames + 1 ] = v
end

local languageNamesFr = {}
for k, v in pairs( mw.language.fetchLanguageNames( 'fr' ) ) do
	languageNamesFr[ #languageNamesFr + 1 ] = v
end

function p.v1( frame )
	local args = frame:getParent().args

	local texts
	if args['noms data langue'] == 'oui' then
		texts = nomsDataLangue
	elseif args['language names'] == 'oui' then
		texts = languageNames
	elseif args['language names fr'] == 'oui' then
		texts = languageNamesFr
	else
		texts = { args.text }
	end

	local uLower = mw.ustring.lower

	for i = 1, args.nb do
		for j = 1, #texts do
			local text = texts[ j ]
			uLower( text )
		end
	end
end

function p.v2( frame )
	local args = frame:getParent().args

	local texts
	if args['noms data langue'] == 'oui' then
		texts = nomsDataLangue
	elseif args['language names'] == 'oui' then
		texts = languageNames
	elseif args['language names fr'] == 'oui' then
		texts = languageNamesFr
	else
		texts = { args.text }
	end

	local uLower = mw.ustring.lower

	for i = 1, args.nb do
		for j = 1, #texts do
			local text = texts[ j ]
			if text:find( '[^a-z ]' ) then
				uLower( text )
			end
		end
	end
end

function p.v3( frame )
	local args = frame:getParent().args

	local texts
	if args['noms data langue'] == 'oui' then
		texts = nomsDataLangue
	elseif args['language names'] == 'oui' then
		texts = languageNames
	elseif args['language names fr'] == 'oui' then
		texts = languageNamesFr
	else
		texts = { args.text }
	end

	local uLower = mw.ustring.lower

	for i = 1, args.nb do
		for j = 1, #texts do
			local text = texts[ j ]
			if text:find( '[^a-zA-Z ]' ) then
				uLower( text )
			else
				text:lower()
			end
		end
	end
end

function p.v4( frame )
	local args = frame:getParent().args

	local texts
	if args['noms data langue'] == 'oui' then
		texts = nomsDataLangue
	elseif args['language names'] == 'oui' then
		texts = languageNames
	elseif args['language names fr'] == 'oui' then
		texts = languageNamesFr
	else
		texts = { args.text }
	end

	local uLower = mw.ustring.lower

	for i = 1, args.nb do
		for j = 1, #texts do
			local text = texts[ j ]
			if text:find( '[^a-z ]' ) then
				if text:find( '[^a-zA-Z ]' ) then
					uLower( text )
				else
					text:lower()
				end
			end
		end
	end
end

return p