打开/关闭菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

模块:Emoji:修订间差异

来自Cookie☆Wiki
(fix)
(拆分)
第3行: 第3行:
local data = require('Module:emoji/data')
local data = require('Module:emoji/data')


function p.emoji()
local function getEmojiMeta(data, name)
    local frame = mw.getCurrentFrame():getParent()
    local name = frame.args[1]
    local var = nil
 
    -- 接受两种格式来指定变种:
    -- {{e|名称/变种名}}
    -- {{e|名称|变种名}}
    local varSepPosi = string.find(name, '/')
    if varSepPosi ~= nil then
        var = string.sub(name, varSepPosi + 1)
        name = string.sub(name, 1, varSepPosi - 1)
    else
        var = frame.args[2]
    end
 
     -- 获取该名称 emoji 的元数据, 处理别名
     -- 获取该名称 emoji 的元数据, 处理别名
     local meta = name
     local meta = name
第24行: 第9行:
         meta = data.emojis[meta]
         meta = data.emojis[meta]
         if type(meta) == 'table' then
         if type(meta) == 'table' then
             break
             return meta, true
         elseif meta == nil then
         elseif meta == nil then
             return frame:expandTemplate {
             return frame:expandTemplate {
第32行: 第17行:
                     'emoji遗失, 名称: ' .. name,
                     'emoji遗失, 名称: ' .. name,
                 },
                 },
             }
             }, false
         elseif type(meta) ~= 'string' then
         elseif type(meta) ~= 'string' then
             return frame:expandTemplate {
             return frame:expandTemplate {
第40行: 第25行:
                     'emoji配置不正确, 类型: ' .. type(meta),
                     'emoji配置不正确, 类型: ' .. type(meta),
                 },
                 },
             }
             }, false
         end
         end
     end
     end
   
end
 
local function resolveVariety(meta, varietyName)
     -- 处理变种 (如果指定了)
     -- 处理变种 (如果指定了)
     -- 变种暂时不支持别名 (懒)
     -- 变种暂时不支持别名 (懒)
    meta = (meta.aliases or {})[varietyName]
    if meta == nil then
        return frame:expandTemplate {
            title = '?',
            args = {
                '[[help:emoji|❓]]',
                'emoji变种遗失, 变种名称: ' .. varietyName,
            },
        }, false
    elseif type(meta) == 'string' then
        return frame:expandTemplate {
            title = '?',
            args = {
                '[[help:emoji|❓]]',
                'emoji变种暂未支持别名',
            },
        }, false
    elseif type(meta) ~= 'table' then
        return frame:expandTemplate {
            title = '?',
            args = {
                '[[help:emoji|❓]]',
                'emoji变种配置不正确, 类型:' .. type(meta),
            },
        }, false
    end
    return meta, true
end
function p.emoji()
    local frame = mw.getCurrentFrame():getParent()
    local name = frame.args[1]
    local var = nil
    -- 接受两种格式来指定变种:
    -- {{e|名称/变种名}}
    -- {{e|名称|变种名}}
    local varSepPosi = string.find(name, '/')
    if varSepPosi ~= nil then
        var = string.sub(name, varSepPosi + 1)
        name = string.sub(name, 1, varSepPosi - 1)
    else
        var = frame.args[2]
    end
    local metaOrError, succ = getEmojiMeta(data, name)
    if not succ then
        return metaOrError
    end
    local meta = metaOrError
   
     if var ~= nil then
     if var ~= nil then
         meta = (meta.aliases or {})[var]
         local metaOrError, succ = resolveVariety(meta, var)
        if meta == nil then
         if not succ then
            return frame:expandTemplate {
             return metaOrError
                title = '?',
                args = {
                    '[[help:emoji|❓]]',
                    'emoji变种遗失, 变种名称: ' .. var,
                },
            }
        elseif type(meta) == 'string' then
            return frame:expandTemplate {
                title = '?',
                args = {
                    '[[help:emoji|❓]]',
                    'emoji变种暂未支持别名',
                },
            }
         elseif type(meta) ~= 'table' then
             return frame:expandTemplate {
                title = '?',
                args = {
                    '[[help:emoji|❓]]',
                    'emoji变种配置不正确, 类型:' .. type(meta),
                },
            }
         end
         end
        meta = metaOrError
     end
     end



2019年4月17日 (三) 03:25的版本

此模块的文档可以在模块:Emoji/doc创建

local p = {}

local data = require('Module:emoji/data')

local function getEmojiMeta(data, name)
    -- 获取该名称 emoji 的元数据, 处理别名
    local meta = name
    while true do
        meta = data.emojis[meta]
        if type(meta) == 'table' then
            return meta, true
        elseif meta == nil then
            return frame:expandTemplate {
                title = '?',
                args = {
                    '[[help:emoji|❓]]',
                    'emoji遗失, 名称: ' .. name,
                },
            }, false
        elseif type(meta) ~= 'string' then
            return frame:expandTemplate {
                title = '?',
                args = {
                    '[[help:emoji|❓]]',
                    'emoji配置不正确, 类型: ' .. type(meta),
                },
            }, false
        end
    end
end

local function resolveVariety(meta, varietyName)
    -- 处理变种 (如果指定了)
    -- 变种暂时不支持别名 (懒)
    meta = (meta.aliases or {})[varietyName]
    if meta == nil then
        return frame:expandTemplate {
            title = '?',
            args = {
                '[[help:emoji|❓]]',
                'emoji变种遗失, 变种名称: ' .. varietyName,
            },
        }, false
    elseif type(meta) == 'string' then
        return frame:expandTemplate {
            title = '?',
            args = {
                '[[help:emoji|❓]]',
                'emoji变种暂未支持别名',
            },
        }, false
    elseif type(meta) ~= 'table' then
        return frame:expandTemplate {
            title = '?',
            args = {
                '[[help:emoji|❓]]',
                'emoji变种配置不正确, 类型:' .. type(meta),
            },
        }, false
    end
    return meta, true
end

function p.emoji()
    local frame = mw.getCurrentFrame():getParent()
    local name = frame.args[1]
    local var = nil

    -- 接受两种格式来指定变种:
    -- {{e|名称/变种名}}
    -- {{e|名称|变种名}}
    local varSepPosi = string.find(name, '/')
    if varSepPosi ~= nil then
        var = string.sub(name, varSepPosi + 1)
        name = string.sub(name, 1, varSepPosi - 1)
    else
        var = frame.args[2]
    end

    local metaOrError, succ = getEmojiMeta(data, name)
    if not succ then
        return metaOrError
    end
    local meta = metaOrError
    
    if var ~= nil then
        local metaOrError, succ = resolveVariety(meta, var)
        if not succ then
            return metaOrError
        end
        meta = metaOrError
    end

    if type(meta.position) ~= 'table'
        or type(meta.position[1]) ~= 'number'
        or type(meta.position[2]) ~= 'number' 
    then
        return frame:expandTemplate {
            title = '?',
            args = {
                '[[help:emoji|❓]]',
                'emoji位置配置不正确',
            },
        }
    end

    local image = data.texture.image
    local row = meta.position[1]
    local col = meta.position[2]
    local width = data.texture.unitSize[1]
    local height = data.texture.unitSize[2]
    local y = row * height
    local x = col * width
    
    return frame:expandTemplate {
        title = 'image crop‎‎',
        width = width,
        height = height,
        y = y,
        x = x,
        image = '[[File:' .. image .. '|link=help:emoji]]',
    }

end

return p