포켓몬 위키
편집 요약 없음
태그: sourceedit
편집 요약 없음
태그: sourceedit
 
(같은 사용자의 중간 판 36개는 보이지 않습니다)
1번째 줄: 1번째 줄:
  +
-- 색상 관련 모듈
  +
-- @Author: [[User:Cafeinlove]] at ko.pokemon.wikia.com
  +
-- @License: MIT License
  +
 
local color = {}
 
local color = {}
 
-- 색상표
 
-- ['타입'] = { '밝은색', '표준색', '진한색' } 순서로 표기
 
local scheme = {
 
['노말'] = { '#a8a878', '#c6c6a7', '#6d6d4e' },
 
['불꽃'] = { '#f08030', '#f5ac78', '#9c531f' },
 
['물'] = { '#6890f0', '#9db7f5', '#445e9c' },
 
['전기'] = { '#f8d030', '#fae078', '#a1871f' },
 
['풀'] = { '#78c850', '#a7db8d', '#4e8234' },
 
['얼음'] = { '#98d8d8', '#bce6e6', '#638d8d' },
 
['격투'] = { '#c03028', '#d67873', '#7d1f1a' },
 
['독'] = { '#a040a0', '#c183c1', '#682a68' },
 
['땅'] = { '#e0c068', '#ebd69d', '#927d44' },
 
['비행'] = { '#a890f0', '#c6b7f5', '#6d5e9c' },
 
['에스퍼'] = { '#f85888', '#fa92b2', '#a13959' },
 
['벌레'] = { '#a8b820', '#c6d16e', '#6d7815' },
 
['바위'] = { '#b8a038', '#d1c17d', '#786824' },
 
['고스트'] = { '#705898', '#a292bc', '#493963' },
 
['드래곤'] = { '#7038f8', '#a27dfa', '#4924a1' },
 
['악'] = { '#705848', '#a29288', '#49392f' },
 
['강철'] = { '#b8b8d0', '#d1d1e0', '#787887' },
 
['페어리'] = { '#fea3e8', '#ffcff3', '#b66783' },
 
['???'] = { '#68a090', '#9dc1b7', '#44685e' }
 
}
 
   
  +
-- Dependencies
-- 틀:색타
 
  +
local getArgs = getArgs or require( 'Module:Arguments' ).getArgs
function color._main ( frame )
 
  +
local scheme = scheme or mw.loadData( 'Module:Color/Scheme' )
local args = frame.args
 
  +
local typeScheme = typeScheme or scheme.types -- 타입 색상표
local sColor = args[1]
 
  +
local moveScheme = moveScheme or scheme.moves -- 기술분류 색상표
local sTextColor = args[2]
 
local output = mw.html.create( 'span' )
 
 
 
  +
-- 문자열이 유효한 Hex색상값인지 확인
output
 
  +
-- 입력값이 유효하면 색상 포맷으로 리턴(#가 없으면 붙임)
:css( 'background', scheme[sColor][2] )
 
  +
-- 입력값이 nil 이면 'inherit'을 리턴
:css( 'padding', '0 .5em' )
 
  +
local function formatColor( value )
:wikitext( '[[' .. sColor .. ' (타입)|<span style="color:#' .. sTextColor ..'">' .. sColor .. '</span>]]' )
 
  +
if value == nil then return 'inherit' end
:done()
 
  +
local hex = value:match( '%x%x%x[%x]?[%x]?[%x]?' )
 
return output
+
return hex and '#' .. hex or value
 
end
 
end
 
 
 
-- 틀:색
 
-- 틀:색
function color.main ( frame )
+
function color.toText ( colorStr, text )
  +
if not text then return '' end
local args = frame.args
 
 
local output = mw.html.create( 'span' )
 
  +
local colorVal = formatColor( colorStr )
 
local sColor = args[1] ~= 'inherit' and '#' .. args[1] or 'inherit'
+
local ret = mw.html.create( 'span' )
 
:css( 'color', colorVal )
local sText = args[2] ~= '' and args[2] or '내용을 입력해 주세요.'
 
 
:wikitext( text )
 
output
 
:css( 'color', sColor )
 
:wikitext( sText )
 
 
:done()
 
:done()
 
 
return output
+
return ret
  +
end
  +
  +
-- 틀:색2
  +
function color.toLink ( colorStr, pageName, altName )
  +
if not pageName then return '' end
  +
  +
local colorVal = formatColor( colorStr )
 
local ret = '[[' .. pageName .. '|<span style="color:' .. colorVal ..'">' .. ( altName or pageName ) .. '</span>]]'
  +
  +
return ret
  +
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 colors, gradientMap, gradientStop, ret = {}, {}, 0, ''
  +
  +
for i = 1, #typeTable do
  +
colors[i] = typeScheme[ typeTable[i] ][2]
 
end
  +
  +
if #typeTable == 1 then
 
ret = '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
  +
ret = 'background: linear-gradient(to right, '
  +
.. table.concat( gradientMap, ',') .. ');'
  +
end
  +
  +
return ret
  +
end
  +
  +
function color.toTypeLink ( ... )
  +
local argHash, types, ret = {}, {}, ''
  +
  +
for _, v in ipairs( arg ) 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 ( move )
  +
local colorVal
 
local ret = ''
  +
  +
if move and moveScheme[move] then
  +
colorVal = moveScheme[move][2]
  +
ret = '<span class="split-cell-wrap text-center"><span class="split-cell-bg" style="background: ' .. colorVal .. ';"></span><span class="split-cell text-white" style="background: ' .. colorVal .. ';">' .. move .. '</span></span>'
  +
end
  +
  +
return ret
  +
end
  +
 
function color.main( frame )
 
local args = getArgs( frame )
 
local requested = args['request']
  +
local ret
  +
  +
if requested == 'toText' then
  +
ret = color.toText( args[1], args[2] )
  +
elseif requested == 'toLink' then
  +
ret = color.toLink( args[1], args[2], args[3] )
  +
elseif requested == 'toTypeLink' then
  +
ret = color.toTypeLink( args[1], args[2] )
  +
elseif requested == 'toMoveText' then
 
ret = color.toMoveText( args[1] )
  +
end
  +
  +
return ret
 
end
 
end
 
 

2017년 2월 1일 (수) 09:19 기준 최신판

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

-- 색상 관련 모듈
-- @Author: [[User:Cafeinlove]] at ko.pokemon.wikia.com
-- @License: MIT License

local color = {}

-- Dependencies
local getArgs = getArgs or require( 'Module:Arguments' ).getArgs
local scheme = scheme or mw.loadData( 'Module:Color/Scheme' )
local typeScheme = typeScheme or scheme.types -- 타입 색상표
local moveScheme = moveScheme or scheme.moves -- 기술분류 색상표
 
-- 문자열이 유효한 Hex색상값인지 확인
-- 입력값이 유효하면 색상 포맷으로 리턴(#가 없으면 붙임)
-- 입력값이 nil 이면 'inherit'을 리턴
local function formatColor( value )
    if value == nil then return 'inherit' end
    local hex = value:match( '%x%x%x[%x]?[%x]?[%x]?' )
    return hex and '#' .. hex  or value
end
 
-- 틀:색
function color.toText ( colorStr, text )
    if not text then return '' end
 
    local colorVal = formatColor( colorStr )
    local ret = mw.html.create( 'span' )
        :css( 'color', colorVal )
        :wikitext( text )
        :done()
 
    return ret
end
 
-- 틀:색2
function color.toLink ( colorStr, pageName, altName )
    if not pageName then return '' end
 
    local colorVal = formatColor( colorStr )
    local ret = '[[' .. pageName .. '|<span style="color:' .. colorVal ..'">' .. ( altName or pageName ) .. '</span>]]'
 
    return ret
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 colors, gradientMap, gradientStop, ret = {}, {}, 0, ''
 
    for i = 1, #typeTable do
        colors[i] = typeScheme[ typeTable[i] ][2]
    end
 
    if #typeTable == 1 then
        ret = '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
        ret = 'background: linear-gradient(to right, '
            .. table.concat( gradientMap, ',') .. ');'
    end
 
    return ret
end
 
function color.toTypeLink ( ... )
    local argHash, types, ret = {}, {}, ''
 
    for _, v in ipairs( arg ) 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 ( move )
    local colorVal
    local ret = ''
 
    if move and moveScheme[move] then
        colorVal = moveScheme[move][2]
        ret = '<span class="split-cell-wrap text-center"><span class="split-cell-bg" style="background: ' .. colorVal .. ';"></span><span class="split-cell text-white" style="background: ' .. colorVal .. ';">' .. move .. '</span></span>'
    end
 
    return ret
end
 
function color.main( frame )
    local args = getArgs( frame )
    local requested = args['request']
    local ret
 
    if requested == 'toText' then
        ret = color.toText( args[1], args[2] )
    elseif requested == 'toLink' then
        ret = color.toLink( args[1], args[2], args[3] )
    elseif requested == 'toTypeLink' then
        ret = color.toTypeLink( args[1], args[2] )
    elseif requested == 'toMoveText' then
        ret = color.toMoveText( args[1] )
    end
 
    return ret
end
 
return color