Modül:RolBox: Revizyonlar arasındaki fark

FM Wiki sitesinden
Değişiklik özeti yok
Değişiklik özeti yok
7. satır: 7. satır:
     end
     end
     return t
     return t
end
local function buildBadges(list, baseClass)
    local html = ""
    for _, v in ipairs(list) do
        html = html .. string.format('<span class="%s">%s</span>', baseClass, v)
    end
    return html
end
end


function p.render(frame)
function p.render(frame)
     local args = frame:getParent().args
     local parent = frame:getParent() or frame
    local args  = parent.args
 
    local name      = args["ad"] or args["isim"] or ""
    local code      = args["kod"] or ""
    local duty      = args["gorev"] or ""
    local position  = args["pozisyon"] or ""
    local desc      = args["aciklama"] or ""
    local critical  = args["kritik"] or ""
    local secondary  = args["ikincil"] or ""
    local icons      = args["simgeler"] or ""


     local isim      = args["isim"] or ""
     local criticalList  = critical ~= "" and splitList(critical)  or {}
    local gorev    = args["gorev"] or ""
     local secondaryList = secondary ~= "" and splitList(secondary) or {}
     local aciklama  = args["aciklama"] or ""
     local iconList      = icons ~= "" and splitList(icons)      or {}
    local kritik    = args["kritik"] or ""
     local ikinci    = args["ikinci"] or ""
    local simgeler  = args["simgeler"] or ""


     local kritikList = kritik ~= "" and splitList(kritik) or {}
     -- Görev rozetine ek sınıf (support/attack/defend vb.)
     local ikinciList = ikinci ~= "" and splitList(ikinci) or {}
     local dutyClass = "fm-rolecard__duty"
     local simgeList  = simgeler ~= "" and splitList(simgeler) or {}
     local dutyLower = mw.ustring.lower(duty or "")


     -- kritik badge
     if dutyLower ~= "" then
    local kritik_html = ""
        if dutyLower:find("support") or dutyLower:find("destek") then
    for _,v in ipairs(kritikList) do
            dutyClass = dutyClass .. " fm-rolecard__duty--support"
        kritik_html = kritik_html .. '<span class="fm-pill fm-pill-critical">' .. v .. '</span>'
        elseif dutyLower:find("attack") or dutyLower:find("hücum") then
            dutyClass = dutyClass .. " fm-rolecard__duty--attack"
        elseif dutyLower:find("defend") or dutyLower:find("savunma") then
            dutyClass = dutyClass .. " fm-rolecard__duty--defend"
        end
     end
     end


     -- ikinci badge
     local criticalHtml  = buildBadges(criticalList,  "fm-rolecard__badge fm-rolecard__badge--critical")
     local ikinci_html = ""
    local secondaryHtml = buildBadges(secondaryList, "fm-rolecard__badge fm-rolecard__badge--secondary")
     for _,v in ipairs(ikinciList) do
 
         ikinci_html = ikinci_html .. '<span class="fm-pill fm-pill-secondary">' .. v .. '</span>'
     local iconsHtml = ""
     for _, v in ipairs(iconList) do
         iconsHtml = iconsHtml .. string.format('<span class="fm-rolecard__icon">%s</span>', v)
     end
     end


     -- simgeler
     local metaLine = ""
     local simge_html = ""
     local parts = {}
     for _,v in ipairs(simgeList) do
    if code ~= "" then table.insert(parts, code) end
         simge_html = simge_html .. '<span class="fm-icon">' .. v .. '</span>'
     if position ~= "" then table.insert(parts, position) end
    if #parts > 0 then
         metaLine = '<div class="fm-rolecard__meta">' .. table.concat(parts, " • ") .. '</div>'
     end
     end


    -- açıklama
     local descHtml = ""
     local aciklama_html = ""
     if desc ~= "" then
     if aciklama ~= "" then
         descHtml = string.format('<div class="fm-rolecard__description">%s</div>', desc)
         aciklama_html = string.format('<div class="fm-desc">%s</div>', aciklama)
     end
     end


    -- ikinci alan varsa blok
     local criticalBlock = ""
     local ikinci_block = ""
     if critical ~= "" then
     if ikinci ~= "" then
         criticalBlock = string.format([[
         ikinci_block = string.format([[
         <div class="fm-rolecard__section">
         <tr>
             <div class="fm-rolecard__section-title">Kritik Özellikler</div>
             <th>İkincil Alanlar</th>
             <div class="fm-rolecard__badge-list">%s</div>
             <td>%s</td>
         </div>
         </tr>
         ]], criticalHtml)
         ]], ikinci_html)
     end
     end


     return string.format([[
     local secondaryBlock = ""
<div class="fm-rolebox-pro">
    if secondary ~= "" then
    <table class="fm-table">
        secondaryBlock = string.format([[
        <tr>
        <div class="fm-rolecard__section">
            <th>Rol</th>
            <div class="fm-rolecard__section-title">İkincil Özellikler</div>
             <td class="fm-name">%s</td>
             <div class="fm-rolecard__badge-list">%s</div>
        </tr>
         </div>
        <tr>
         ]], secondaryHtml)
            <th>Görev</th>
     end
            <td class="fm-tag">%s</td>
         </tr>
         %s
        <tr>
            <th>Kritik Alanlar</th>
            <td>%s</td>
        </tr>
        <tr>
            <th>Simgeler</th>
            <td>%s</td>
        </tr>
     </table>


    local iconsBlock = ""
    if icons ~= "" then
        iconsBlock = string.format([[
        <div class="fm-rolecard__section fm-rolecard__section--icons">
            <div class="fm-rolecard__badge-list">%s</div>
        </div>
        ]], iconsHtml)
    end
    local html = string.format([[
<div class="fm-rolecard">
    <div class="fm-rolecard__header">
        <div class="fm-rolecard__title-group">
            <div class="fm-rolecard__name">%s</div>
            %s
        </div>
        <div class="%s">%s</div>
    </div>
    %s
    %s
    %s
     %s
     %s
</div>
</div>
]],
]],
         isim,
         name,
         gorev,
         metaLine,
         ikinci_block,
         dutyClass, duty,
         kritik_html,
        descHtml,
         simge_html,
         criticalBlock,
         aciklama_html
         secondaryBlock,
         iconsBlock
     )
     )
    return html
end
end


return p
return p

08.09, 4 Aralık 2025 tarihindeki hâli

Bu modül için bir Modül:RolBox/belge belgelendirmesi oluşturabilirsiniz

local p = {}

local function splitList(str)
    local t = {}
    for item in string.gmatch(str, "([^,]+)") do
        table.insert(t, mw.text.trim(item))
    end
    return t
end

local function buildBadges(list, baseClass)
    local html = ""
    for _, v in ipairs(list) do
        html = html .. string.format('<span class="%s">%s</span>', baseClass, v)
    end
    return html
end

function p.render(frame)
    local parent = frame:getParent() or frame
    local args   = parent.args

    local name       = args["ad"] or args["isim"] or ""
    local code       = args["kod"] or ""
    local duty       = args["gorev"] or ""
    local position   = args["pozisyon"] or ""
    local desc       = args["aciklama"] or ""
    local critical   = args["kritik"] or ""
    local secondary  = args["ikincil"] or ""
    local icons      = args["simgeler"] or ""

    local criticalList  = critical ~= "" and splitList(critical)  or {}
    local secondaryList = secondary ~= "" and splitList(secondary) or {}
    local iconList      = icons ~= "" and splitList(icons)       or {}

    -- Görev rozetine ek sınıf (support/attack/defend vb.)
    local dutyClass = "fm-rolecard__duty"
    local dutyLower = mw.ustring.lower(duty or "")

    if dutyLower ~= "" then
        if dutyLower:find("support") or dutyLower:find("destek") then
            dutyClass = dutyClass .. " fm-rolecard__duty--support"
        elseif dutyLower:find("attack") or dutyLower:find("hücum") then
            dutyClass = dutyClass .. " fm-rolecard__duty--attack"
        elseif dutyLower:find("defend") or dutyLower:find("savunma") then
            dutyClass = dutyClass .. " fm-rolecard__duty--defend"
        end
    end

    local criticalHtml  = buildBadges(criticalList,  "fm-rolecard__badge fm-rolecard__badge--critical")
    local secondaryHtml = buildBadges(secondaryList, "fm-rolecard__badge fm-rolecard__badge--secondary")

    local iconsHtml = ""
    for _, v in ipairs(iconList) do
        iconsHtml = iconsHtml .. string.format('<span class="fm-rolecard__icon">%s</span>', v)
    end

    local metaLine = ""
    local parts = {}
    if code ~= "" then table.insert(parts, code) end
    if position ~= "" then table.insert(parts, position) end
    if #parts > 0 then
        metaLine = '<div class="fm-rolecard__meta">' .. table.concat(parts, " • ") .. '</div>'
    end

    local descHtml = ""
    if desc ~= "" then
        descHtml = string.format('<div class="fm-rolecard__description">%s</div>', desc)
    end

    local criticalBlock = ""
    if critical ~= "" then
        criticalBlock = string.format([[
        <div class="fm-rolecard__section">
            <div class="fm-rolecard__section-title">Kritik Özellikler</div>
            <div class="fm-rolecard__badge-list">%s</div>
        </div>
        ]], criticalHtml)
    end

    local secondaryBlock = ""
    if secondary ~= "" then
        secondaryBlock = string.format([[
        <div class="fm-rolecard__section">
            <div class="fm-rolecard__section-title">İkincil Özellikler</div>
            <div class="fm-rolecard__badge-list">%s</div>
        </div>
        ]], secondaryHtml)
    end

    local iconsBlock = ""
    if icons ~= "" then
        iconsBlock = string.format([[
        <div class="fm-rolecard__section fm-rolecard__section--icons">
            <div class="fm-rolecard__badge-list">%s</div>
        </div>
        ]], iconsHtml)
    end

    local html = string.format([[
<div class="fm-rolecard">
    <div class="fm-rolecard__header">
        <div class="fm-rolecard__title-group">
            <div class="fm-rolecard__name">%s</div>
            %s
        </div>
        <div class="%s">%s</div>
    </div>

    %s

    %s
    %s
    %s
</div>
]],
        name,
        metaLine,
        dutyClass, duty,
        descHtml,
        criticalBlock,
        secondaryBlock,
        iconsBlock
    )

    return html
end

return p