Cafeinlove (메시지 담벼락 | 기여) 편집 요약 없음 태그: sourceedit |
Cafeinlove (메시지 담벼락 | 기여) 편집 요약 없음 태그: sourceedit |
||
(같은 사용자의 중간 판 36개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
+ | -- 색상 관련 모듈 |
||
+ | -- @Author: [[User:Cafeinlove]] at ko.pokemon.wikia.com |
||
+ | -- @License: MIT License |
||
+ | |||
local color = {} |
local color = {} |
||
⚫ | |||
− | -- 색상표 |
||
− | -- ['타입'] = { '밝은색', '표준색', '진한색' } 순서로 표기 |
||
⚫ | |||
− | ['노말'] = { '#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 |
||
⚫ | |||
+ | local scheme = scheme or mw.loadData( 'Module:Color/Scheme' ) |
||
⚫ | |||
+ | local typeScheme = typeScheme or scheme.types -- 타입 색상표 |
||
⚫ | |||
+ | local moveScheme = moveScheme or scheme.moves -- 기술분류 색상표 |
||
− | local sTextColor = args[2] |
||
− | local output = mw.html.create( 'span' ) |
||
+ | -- 문자열이 유효한 Hex색상값인지 확인 |
||
− | output |
||
+ | -- 입력값이 유효하면 색상 포맷으로 리턴(#가 없으면 붙임) |
||
⚫ | |||
+ | -- 입력값이 nil 이면 'inherit'을 리턴 |
||
⚫ | |||
+ | local function formatColor( value ) |
||
⚫ | |||
+ | if value == nil then return 'inherit' end |
||
⚫ | |||
+ | local hex = value:match( '%x%x%x[%x]?[%x]?[%x]?' ) |
||
⚫ | |||
− | return |
+ | return hex and '#' .. hex or value |
end |
end |
||
⚫ | |||
− | |||
-- 틀:색 |
-- 틀:색 |
||
− | function color. |
+ | 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 |
+ | local ret = mw.html.create( 'span' ) |
⚫ | |||
− | local sText = args[2] ~= '' and args[2] or '내용을 입력해 주세요.' |
||
⚫ | |||
− | |||
− | output |
||
⚫ | |||
⚫ | |||
:done() |
:done() |
||
− | return |
+ | return ret |
+ | end |
||
+ | |||
+ | -- 틀:색2 |
||
+ | function color.toLink ( colorStr, pageName, altName ) |
||
+ | if not pageName then return '' end |
||
+ | |||
+ | local colorVal = formatColor( colorStr ) |
||
⚫ | |||
+ | |||
+ | 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] |
||
⚫ | |||
+ | |||
+ | if #typeTable == 1 then |
||
⚫ | |||
+ | else |
||
+ | for i = 1, #colors do |
||
+ | table.insert( gradientMap, colors[i] .. ' ' .. gradientStop .. '%' ) |
||
+ | gradientStop = gradientStop + ( 100 / #colors ) |
||
+ | table.insert( gradientMap, colors[i] .. ' ' .. gradientStop .. '%' ) |
||
⚫ | |||
+ | 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 |
||
⚫ | |||
+ | |||
+ | 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 |
||
+ | |||
⚫ | |||
⚫ | |||
⚫ | |||
+ | 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 |
||
⚫ | |||
+ | 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