Изменения
снова пока откат из-за повсеместных ошибок
local languages = mw.loadData("Module:languages/data")
local languages = mw.loadData("Module:languages/data")
local p = {}
local p = {}
-- вспомогательная функция, удаляет пробелы
local function trimstr(s)
return (s:gsub("^%s*(.-)%s*$", "%1"))
end
-- получает код языка, возвращает ссылку и нормализованный код языка (или пустые строки)
-- получает код языка, возвращает ссылку и нормализованный код языка (или пустые строки)
local l = languages[code];
local l = languages[code];
if l ~= nil then
if l ~= nil then
return string.format("[[%s|%s]]", l[2], l[1]), code
return "[[" .. l[2] .. "|" .. l[1] .. "]]", code
elseif code ~= "" then
elseif code ~= "" then
return code, ""
return code, ""
function p.list(frame)
function p.list(frame)
local curr_lang = nil
local curr_lang = nil
local result = {}
local result = nil
for n, v in ipairs(frame:getParent().args) do
for n, v in frame:argumentPairs() do
local trimmed = mw.text.trim(v)
local trimmed = trimstr(v)
if not curr_lang then
if curr_lang == nil then
if trimmed ~= '' then
if trimmed ~= '' then
-- если язык пропущен, оставим прошлый
-- если язык пропущен, оставим прошлый
curr_lang = trimmed
curr_lang = trimstr(v)
end
end
else
else
if trimmed ~= '' then
if trimmed ~= '' then
local link, lang_code = get_lang_data(curr_lang)
local link, lang_code = get_lang_data(curr_lang)
local list_item = lang_code ~= ''
local list_item
if lang_code ~= '' then
list_item = link .. " <span lang='" .. lang_code .. "'>" .. trimmed .. "</span>"
else
list_item = link .. " <span class='unknown-foreign-lang'>" .. trimmed .. "</span>"
end
if result == nil then
result = list_item
else
result = result .. ", " .. list_item
end
else
else
-- Пустой текст — значит, текущий язык совпадает со следующим
-- Пустой текст — значит, текущий язык совпадает с следующим
local link, lang_code = get_lang_data(curr_lang)
local link, lang_code = get_lang_data(curr_lang)
if result == nil then
result = link
else
result = result .. ", " .. link
end
end
end
-- просто #invoke:Languages|list|yue должно возвращать всё же ссылку без текста
-- просто #invoke:Languages|list|yue должно возвращать всё же ссылку без текста
if curr_lang then
if curr_lang ~= nil then
local link, lang_code = get_lang_data(curr_lang)
local link, lang_code = get_lang_data(curr_lang)
if result ~= nil then
result = result .. ", " .. link
else
result = link
end
end
end
end
return result
end
end
return p
return p