모듈:ImageSwitch: 두 판 사이의 차이

편집 요약 없음
편집 요약 없음
30번째 줄: 30번째 줄:
     end
     end


     local imgTag = '<img src="' .. lighturl .. '"'
     local html = {}
     if width ~= '' then imgTag = imgTag .. ' width="' .. width .. '"' end
     table.insert(html, '<div class="image-switch-wrapper">')
    if alt ~= '' then imgTag = imgTag .. ' alt="' .. alt .. '"' end
    if class ~= '' then imgTag = imgTag .. ' class="' .. class .. '"' end
    if style ~= '' then imgTag = imgTag .. ' style="' .. style .. '"' end
    imgTag = imgTag .. '>'


     if link ~= '' then
    -- 라이트모드 이미지
         imgTag = '<a href="/wiki/' .. link .. '">' .. imgTag .. '</a>'
    local img1 = '<img src="' .. lighturl .. '" class="light-mode-img'
    if class ~= '' then img1 = img1 .. ' ' .. class end
    img1 = img1 .. '"'
    if width ~= '' then img1 = img1 .. ' width="' .. width .. '"' end
    if alt ~= '' then img1 = img1 .. ' alt="' .. alt .. '"' end
    if style ~= '' then img1 = img1 .. ' style="' .. style .. '"' end
    img1 = img1 .. '>'
 
    -- 다크모드 이미지
    local img2 = ''
     if darkurl ~= '' then
         img2 = '<img src="' .. darkurl .. '" class="dark-mode-img'
        if class ~= '' then img2 = img2 .. ' ' .. class end
        img2 = img2 .. '"'
        if width ~= '' then img2 = img2 .. ' width="' .. width .. '"' end
        if alt ~= '' then img2 = img2 .. ' alt="' .. alt .. '"' end
        if style ~= '' then img2 = img2 .. ' style="' .. style .. '"' end
        img2 = img2 .. '>'
     end
     end


    local html = '<div class="image-switch-wrapper"><picture>'
     if link ~= '' then
     if darkurl ~= '' then
         table.insert(html, '<a href="/wiki/' .. link .. '">' .. img1 .. img2 .. '</a>')
         html = html .. '<source srcset="' .. darkurl .. '" media="(prefers-color-scheme: dark)">'
    else
        table.insert(html, img1 .. img2)
     end
     end
    html = html .. imgTag .. '</picture></div>'


     return html
    table.insert(html, '</div>')
     return table.concat(html)
end
end


return p
return p

2025년 4월 8일 (화) 09:22 판

이 모듈에 대한 설명문서는 모듈:ImageSwitch/설명문서에서 만들 수 있습니다

local p = {}

function escape_html(text)
    return text
        :gsub("&", "&amp;")
        :gsub("<", "&lt;")
        :gsub(">", "&gt;")
        :gsub("\"", "&quot;")
        :gsub("'", "&#39;")
end

function p.main(frame)
    local args = frame:getParent().args
    local light = args[1] or ''
    local dark = args[2] or ''
    local width = escape_html(args[3] or '')
    local alt = escape_html(args['alt'] or '')
    local link = escape_html(args['link'] or '')
    local class = escape_html(args['class'] or '')
    local style = escape_html(args['style'] or '')

    if light == '' then
        return '<strong class="error">라이트모드 이미지가 필요합니다.</strong>'
    end

    local lighturl = escape_html(frame:callParserFunction('filepath', light))
    local darkurl = ''
    if dark and mw.text.trim(dark) ~= '' then
        darkurl = escape_html(frame:callParserFunction('filepath', dark))
    end

    local html = {}
    table.insert(html, '<div class="image-switch-wrapper">')

    -- 라이트모드 이미지
    local img1 = '<img src="' .. lighturl .. '" class="light-mode-img'
    if class ~= '' then img1 = img1 .. ' ' .. class end
    img1 = img1 .. '"'
    if width ~= '' then img1 = img1 .. ' width="' .. width .. '"' end
    if alt ~= '' then img1 = img1 .. ' alt="' .. alt .. '"' end
    if style ~= '' then img1 = img1 .. ' style="' .. style .. '"' end
    img1 = img1 .. '>'

    -- 다크모드 이미지
    local img2 = ''
    if darkurl ~= '' then
        img2 = '<img src="' .. darkurl .. '" class="dark-mode-img'
        if class ~= '' then img2 = img2 .. ' ' .. class end
        img2 = img2 .. '"'
        if width ~= '' then img2 = img2 .. ' width="' .. width .. '"' end
        if alt ~= '' then img2 = img2 .. ' alt="' .. alt .. '"' end
        if style ~= '' then img2 = img2 .. ' style="' .. style .. '"' end
        img2 = img2 .. '>'
    end

    if link ~= '' then
        table.insert(html, '<a href="/wiki/' .. link .. '">' .. img1 .. img2 .. '</a>')
    else
        table.insert(html, img1 .. img2)
    end

    table.insert(html, '</div>')
    return table.concat(html)
end

return p