Aller au contenu

Module:Bac à sable/Lowercase

Une page de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 1 juin 2022 à 01:53 et modifiée en dernier par Od1n (discuter | contributions) (autre approche, ne devrait pas être plus performant, et probablement moins ; c'est surtout pour voir par curiosité). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

 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

return p