Modül:Soyağacı
Westeros Türkiye Vikipedi sitesinden
Bu modül için bir Modül:Soyağacı/belge belgelendirmesi oluşturabilirsiniz
local p = {}
function p.renderRow(frame)
local args = frame:getParent().args
local tr = mw.html.create('tr'):addClass('westeros-row')
local content_map = {}
local structure = {}
for k, v in pairs(args) do
if type(k) == 'number' then
structure[k] = mw.text.trim(v)
elseif type(k) == 'string' and not k:match('^boxstyle') then
content_map[k] = v
end
end
for i = 1, #structure do
local token = structure[i]
local cell = tr:tag('td'):addClass('westeros-cell')
if content_map[token] and token ~= "" then
-- KİŞİ KUTUSU (3 birim genişlik, 2 birim yükseklik)
cell:addClass('westeros-node-cell')
:attr('colspan', '3')
:attr('rowspan', '2')
local container = cell:tag('div'):addClass('westeros-box-container')
local box = container:tag('div'):addClass('westeros-node-box')
if args['boxstyle_' .. token] then
box:cssText(args['boxstyle_' .. token])
elseif args.boxstyle then
box:cssText(args.boxstyle)
end
box:wikitext(content_map[token])
elseif token ~= "" and token ~= " " then
-- BAĞLANTI ÇİZGİSİ
local lineType = p.getLineType(token)
cell:addClass('westeros-line-cell line-' .. lineType)
:tag('div'):addClass('line-canvas')
else
-- BOŞLUK
cell:addClass('westeros-empty-cell')
end
end
return tostring(tr)
end
function p.getLineType(token)
local lineMap = {
['-'] = 'horizontal',
['|'] = 'vertical',
['!'] = 'vertical-bold',
[','] = 'corner-tl', -- Top-Left (Sol Üst)
['.'] = 'corner-tr', -- Top-Right (Sağ Üst)
['`'] = 'corner-bl', -- Bottom-Left (Sol Alt)
["'"] = 'corner-br', -- Bottom-Right (Sağ Alt)
['+'] = 'cross',
['v'] = 't-down',
['^'] = 't-up',
['~'] = 'horizontal-dashed',
[':'] = 'vertical-dashed',
}
return lineMap[token] or 'unknown'
end
return p