Siirry sisältöön

Moduli:Plural switch

On otettu Мегавики-späi

local p = {}

function p.plural(frame) local text = frame.args[1] local text_singular = frame.args[2] local text_plural = frame.args[3]

local is_plural = false

-- проверка по тегам if not is_plural and string.find(text, "<br") then is_plural = true; end if not is_plural then _, count = string.gsub(text, "<li", "<li"); if count > 1 then is_plural = true; end end

-- анализ текста if not is_plural then text = string.gsub(text, '<sup.-', ) -- убираем верхние индексы text = string.gsub(text, '%[%[.-%]%] <span lang=.-', ) -- убираем расшифровки с других языков text = string.gsub(text, '<.->', ) -- убираем все теги text = string.gsub(text, '&.-;', ' ') -- заменяем спец. символы пробелами text = string.gsub(text, '%[%[Category.-%]%]', ) -- вырезаем ссылки на категории text = string.gsub(text, '%[%[File.-%]%]', ) -- вырезаем картинки text = string.gsub(text, '%[%[Файл.-%]%]', ) text = string.gsub(text, '%[%[.-%]%]', 'x,') -- считаем ... одним элементом text = string.gsub(text, '%[.-%]', 'x,') -- считаем [...] одним элементом text = string.gsub(text, '.."`UNIQ.-QINU`"..', ) -- убираем специальные коды викиразметки + возможные замены ... text = string.gsub(text, '\n%*', ',') -- звёздочка в начале - элемент списка text = string.gsub(text, 'x,%-x', 'x') -- элементы-слова через дефис считаем одним text = string.gsub(text, '^ *,', ) -- убираем первую запятую text = string.gsub(text, ', *$', ) -- убираем последнюю запятую

delimiters = {",", ";", "·", "/", " и "} for i,d in pairs(delimiters) do if not is_plural and string.find(text, d) then is_plural = true; end end end

if is_plural then return text_plural; end return text_singular end

return p