Модуль:semantcat
Зовнішній вигляд
Документацію для цього модуля можна створити у Модуль:semantcat/документація
local export = {}
local u = require("Module:utils")
-- Головна функція, що виклкається у модулі.
function export.get(frame)
--local lang = frame.args['lang']
--local args = u.clone(frame:getParent().args)
local title = u.get_base()
local first_letter = mw.ustring.sub(title, 1, 1)
local data = mw.loadData("Module:semantcat/data/" .. first_letter);
local parts = mw.text.split(title, '/')
local parts_count = table.getn(parts)
local lang = ''
if parts_count == 2 then
title = parts[1]
lang = parts[2]
elseif parts_count > 2 then
return 'ERROR #1. Забагато косих рисок у назві категорії'
else
if mw.ustring.sub(title, -10) == ' за мовою' then
title = mw.ustring.sub(title, 1, -11)
lang = 'all'
end
end
text = ''
local key
if data[title] then
for _, value in pairs(data[title]) do
key = ''
parts = mw.text.split(value, '%|')
if table.getn(parts) > 1 then
value = parts[1]
key = parts[2]
end
text = text .. '* {{semantcat/cat|' .. value .. '|' .. lang
if key ~= '' then
text = text .. '|sortkey=' .. key
end
text = text .. '}}\n'
end
else
text = '<span style="color: red;">Додайте підкатегорії до масиву на сторінці: [[Модуль:semantcat/data/' .. first_letter .. ']]</span>'
end
return frame:preprocess(text)
end
-- Генерація документації для дата-модулів
function export.docs(frame)
title = u.get_base()
title = title:gsub("/Документація$", "")
local first_letter = mw.ustring.sub(title, -1)
data = mw.loadData("Module:semantcat/data/" .. first_letter);
local result = '=== Батьківські поняття для шаблону ' .. frame:preprocess("{{шаблон|semantcat}}") .. ', буква «' .. first_letter .. '» ===\n'
result = result .. '→ [[:Категорія:Модулі:semantcat|Решту букв]]\n'
result = result .. '{| class="prettytable" cellpadding="15" cellspacing="5"\n'
result = result .. '! № || Категорія || Батьківські поняття (надкатегорії) \n'
result = result .. '|-\n'
local i = 0
text = ''
for name, chain in u.spairs(data) do
result = result .. "| align=center | " .. i .. " "
result = result .. "|| [[:Категорія:" .. name .. "|" .. name .. "]] "
result = result .. "|| "
local j = 0
for _, value in pairs(data[name]) do
key = ''
parts = mw.text.split(value, '%|')
if table.getn(parts) > 1 then
value = parts[1]
key = parts[2]
end
if j > 0 then
result = result .. ', '
end
result = result .. '[[:Категорія:' .. value .. '|' .. value .. ']]'
if key ~= '' then
result = result .. " ''(" .. key .. ")''"
end
j = j + 1
end
result = result .. ' \n'
result = result .. '|-\n'
i = i + 1
end
result = result .. '|}'
return result
end
return export