Modulo:IsLatin

Da Wikipedia

Mòdolo pe identificâ di caràteri esclûzi da l'arfabêto latìn e fêua di blòcchi "General Punctuation" e "Mathematical Operators". L'idêa òriginâle l'è stæta de l'uténte WOSlinker.

A fonçión analiza o tèsto e no dá nisciùn rizultâto se trœva un ò ciù caràteri fêua di blòcchi sórvia mensonòu, sedónca dá "sci". Se pœ adêuviâ co-o template {{IsLatin}} o atravèrso 'n âtro mòdolo pe òtegnî "false" o "true". Ezénpi d'ûzo:

Tèsto da analizâ Còdice da usâ Rizultâto
salûi {{#invoke:IsLatin|IsLatin|salûi}}
o {{IsLatin|salûi}}
sci
你好 {{#invoke:IsLatin|IsLatin|你好}}
o {{IsLatin|你好}}
привет {{#invoke:IsLatin|IsLatin|привет}}
o {{IsLatin|привет}}
cześć {{#invoke:IsLatin|IsLatin|cześć}}
o {{IsLatin|cześć}}
sci
سلام {{#invoke:IsLatin|IsLatin|سلام}}
o {{IsLatin|سلام}}

local p = {}

-- Funzione per l'utilizzo da altro modulo
function p._IsLatin(args)
	local txt = args[1] or ''
	if mw.text.trim(txt) == '' then return nil end
	
	local len = mw.ustring.len(txt)
	local pos = 1
	while (pos <= len) do
		local charval = mw.ustring.codepoint(mw.ustring.sub(txt, pos))
		if charval >= 880 and charval < 8192 then
			return false
		elseif charval >= 8960 then
			return false
		end
		pos = pos + 1
	end
	return true
end

-- Funzione per il template IsLatin
function p.IsLatin(frame)
	return p._IsLatin(frame.args) and 'sci' or ''
end

return p