Modül:Soyağacı

Westeros Türkiye Vikipedi sitesinden
Şuraya atla:kullan, ara

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