포켓몬 위키
편집 요약 없음
태그: sourceedit
편집 요약 없음
태그: sourceedit
2번째 줄: 2번째 줄:
   
 
local getArgs = require( 'Module:Arguments' ).getArgs
 
local getArgs = require( 'Module:Arguments' ).getArgs
local scheme = mw.loadData( 'Module:Color/Scheme' )
+
local scheme = mw.loadData( 'Module:Color/Scheme' ) -- 전체 색상표
local typeScheme = scheme.type
+
local typeScheme = scheme.types -- 타입 색상표
local attackScheme = scheme.attack
+
local moveScheme = scheme.moves -- 기술분류 색상표
 
 
 
-- 틀:색
 
-- 틀:색
96번째 줄: 96번째 줄:
 
 
 
-- 틀:기분
 
-- 틀:기분
function color.toAttackText ( frame )
+
function color.toMoveText ( frame )
 
 
 
local args = getArgs( frame )
 
local args = getArgs( frame )
 
local move = args[1]
 
  +
local color
-- {{{1}}}이 비었을 경우 틀에서 아무 것도 출력 안 함
 
if args[1] == nil then return '' end
+
local ret = ''
  +
 
  +
if move ~= nil and moveScheme[move] then
local bgColor = args[1]
 
local color = args[2] ~= nil and '#' .. args[2] or 'inherit'
+
color = moveScheme[move][2]
  +
ret = '<span class="split-cell-wrap text-center"><span class="split-cell-bg" style="background: ' .. color .. ';"></span><span class="split-cell text-white" style="background: ' .. color .. ';">' .. move .. '</span></span>'
 
 
end
local ret = mw.html.create( 'span' )
 
  +
:css( 'background', attackScheme[bgColor][2] )
 
:css( 'color', color )
 
:css( 'padding', '0 .25em' )
 
:wikitext( args[1] )
 
:done()
 
 
 
return ret
 
return ret
 
 

2017년 1월 23일 (월) 11:15 판

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

local color = {}

local getArgs = require( 'Module:Arguments' ).getArgs
local scheme = mw.loadData( 'Module:Color/Scheme' ) -- 전체 색상표
local typeScheme = scheme.types -- 타입 색상표
local moveScheme = scheme.moves -- 기술분류 색상표
 
-- 틀:색
function color.toText ( frame )
    
    local args = getArgs( frame )
    
    -- {{{2}}}가 비었을 경우 틀에서 아무 것도 출력 안 함
    if args[2] == nil then return '' end
    
    local color = args[1] ~= nil and '#' .. args[1] or 'inherit'
    local ret = mw.html.create( 'span' )
        :css( 'color', color )
        :wikitext( args[2] )
        :done()
 
    return ret
    
end
 
-- 틀:색2
function color.toLink ( frame )
    
    local args = getArgs( frame )
    
    -- {{{2}}}가 비었을 경우 틀에서 아무 것도 출력 안 함
    if args[2] == nil then return '' end
    
    local color = args[1] ~= nil and '#' .. args[1] or 'initial'
    local text = args[2]
    local textAlt = args[3] ~= nil and args[3] or text
 
    return '[[' .. text .. '|<span style="color:' .. color ..'">' .. textAlt .. '</span>]]'
    
end
 
-- 틀:색타
local function typeToLink( typeName )
    return '[[' .. typeName .. ' (타입)|<span class="split-cell text-white" style="background:' .. typeScheme[typeName][2] .. '">' .. typeName .. '</span>]]'
end

local function typeToGradient( typeTable )
    
    local css = ''
    local colors = {}
    local gradientMap = {}
    local gradientStop = 0
    
    for i = 1, #typeTable do
        colors[i] = typeScheme[ typeTable[i] ][2]
    end
    
    if #typeTable == 1 then
        css = 'background: ' .. colors[1] .. ';'
    else
        for i = 1, #colors do
            table.insert( gradientMap, colors[i] .. ' ' .. gradientStop .. '%' )
            gradientStop = gradientStop + ( 100 / #colors )
            table.insert( gradientMap, colors[i] .. ' ' .. gradientStop .. '%' )
        end
        css = 'background: linear-gradient(to right, '
            .. table.concat( gradientMap, ',') .. ');'
    end

    return css
    
end

function color.toTypeLink ( frame )
    
    local args = getArgs( frame )
    local argHash = {}
    local types = {}
    local ret = ''

    for _, v in ipairs( args ) do
        if ( v ~= nil ) and ( not argHash[v] ) then -- 중복, 빈 파라미터 무시
            if typeScheme[v] then -- 올바른 타입만 픽업
                ret = ret .. typeToLink( v ) -- 링크 생성
                table.insert( types, v ) -- 새 테이블에 타입 추가
                argHash[v] = true
            end
        end
    end
    
    ret = '<span class="split-cell-wrap text-center"><span class="split-cell-bg" style="' .. typeToGradient( types ) .. '"></span>' .. ret .. '</span>'
    
    return ret
    
end
 
-- 틀:기분
function color.toMoveText ( frame )
    
    local args = getArgs( frame )
    local move = args[1]
    local color
    local ret = ''

    if move ~= nil and moveScheme[move] then
        color = moveScheme[move][2]
        ret = '<span class="split-cell-wrap text-center"><span class="split-cell-bg" style="background: ' .. color .. ';"></span><span class="split-cell text-white" style="background: ' .. color .. ';">' .. move .. '</span></span>'
    end

    return ret
    
end
 
return color