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

편집 요약 없음
편집 요약 없음
11번째 줄: 11번째 줄:
     local dark = args[2] or ''
     local dark = args[2] or ''


     local function inject_class(wikitext, class_name)
     local function wrap_img(img_code, class)
         if wikitext:find('|%s*class%s*=') then
         return '<span class="' .. class .. '">' .. img_code .. '</span>'
            return wikitext:gsub('|%s*class%s*=%s*([^|]*)', function(existing)
                return '|class=' .. existing .. ' ' .. class_name
            end)
        else
            return wikitext .. '|class=' .. class_name
        end
     end
     end
    local light_img = inject_class(light, 'light-mode-img')
    local dark_img = dark ~= '' and inject_class(dark, 'dark-mode-img') or ''


     local html = {}
     local html = {}
     table.insert(html, '<span class="image-switch-wrapper">')
     table.insert(html, '<span class="image-switch-wrapper">')
     table.insert(html, light_img)
     table.insert(html, wrap_img(light, 'light-mode-img'))
     if dark_img ~= '' then
     if dark ~= '' then
         table.insert(html, dark_img)
         table.insert(html, wrap_img(dark, 'dark-mode-img'))
     end
     end
     table.insert(html, '</span>')
     table.insert(html, '</span>')

1.2025년 4월 17일 (목) 14:50 판

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

local p = {}

function p.main(frame)
    local args = frame:getParent().args

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

    local dark = args[2] or ''

    local function wrap_img(img_code, class)
        return '<span class="' .. class .. '">' .. img_code .. '</span>'
    end

    local html = {}
    table.insert(html, '<span class="image-switch-wrapper">')
    table.insert(html, wrap_img(light, 'light-mode-img'))
    if dark ~= '' then
        table.insert(html, wrap_img(dark, 'dark-mode-img'))
    end
    table.insert(html, '</span>')

    return table.concat(html)
end

return p