Module:QueryCharacters2:修订间差异

来自有兽档案馆
(// Edit via Wikiplus)
(// Edit via Wikiplus)
 
(未显示2个用户的11个中间版本)
第1行: 第1行:
-- 作者:华纹 (User:Blossomstripe on wiki.zorua.top)
-- @author: 华纹 (User:Blossomstripe on youshou.wiki)
local p = {}
local p = {}


第7行: 第7行:
number:出场话数
number:出场话数
camera_type:出场类型 --]]
camera_type:出场类型 --]]
local args = string.format('[[OnCamera:number::%d]]|[[OnCamera:type::%s]]|?OnCamera:character_name', number, camera_type)
local args = string.format('[[OnCamera:number::%d]]|[[OnCamera:type::%s]]|?OnCamera:character_name', number,
camera_type)
local results = mw.smw.ask(args)
local results = mw.smw.ask(args)


第16行: 第17行:
--[[ 将results给出的角色列表显示出来。要修改角色显示方式,只需修改该函数
--[[ 将results给出的角色列表显示出来。要修改角色显示方式,只需修改该函数
node:mw.html
node:mw.html
results:mw.smw.ask返回的查询结果 --]]
results:mw.smw.ask返回的查询结果
--]]
local ul = node:tag('div'):addClass('characters-list')
local ul = node:tag('div'):addClass('characters-list')
local frame = mw.getCurrentFrame()
local frame = mw.getCurrentFrame()
for _, item in pairs(results) do
for _, item in pairs(results) do
local li = ul:tag('div')
local li = ul:tag('div')
li:wikitext(frame:expandTemplate{ title = '角色信息按键', args = { item['OnCamera:character name'] } })
li:wikitext(frame:expandTemplate { title = '角色信息按键', args = { item
['OnCamera:character name'] } })
end
end


第35行: 第38行:
local results = queryOnNumberAndType(number, camera_type)
local results = queryOnNumberAndType(number, camera_type)
if (type(results) == 'table') then
if (type(results) == 'table') then
node = prettyList(node, results)
node = prettyList(node, results)
end
end
else
else

2023年12月3日 (日) 01:35的最新版本

文档图示 模块文档[创建] [跳转到代码]

本模块还没有文档页面。

您可以创建文档以让编者更好地理解本模块的用途。
编者可以在本模块的沙盒创建 | 镜像和测试样例创建页面进行实验。
请将模块自身所属的分类添加在文档中。本模块的子页面
-- @author: 华纹 (User:Blossomstripe on youshou.wiki)
local p = {}

function p.queryOnNumber(frame)
    local function queryOnNumberAndType(number, camera_type)
        --[[ 给定出场话数和类型,查询出场角色
        number:出场话数
        camera_type:出场类型 --]]
        local args = string.format('[[OnCamera:number::%d]]|[[OnCamera:type::%s]]|?OnCamera:character_name', number,
            camera_type)
        local results = mw.smw.ask(args)

        return results
    end

    local function prettyList(node, results)
        --[[ 将results给出的角色列表显示出来。要修改角色显示方式,只需修改该函数
        node:mw.html
        results:mw.smw.ask返回的查询结果
        --]]
        local ul = node:tag('div'):addClass('characters-list')
        local frame = mw.getCurrentFrame()
        for _, item in pairs(results) do
            local li = ul:tag('div')
            li:wikitext(frame:expandTemplate { title = '角色信息按键', args = { item
                ['OnCamera:character name'] } })
        end

        return node
    end

    local number = frame.args[1]
    local camera_type = frame.args[2]
    local node = mw.html.create('')

    -- 若给定出场类型,则仅查询相应出场类型的角色,否则分别查询所有出场类型的角色
    if (camera_type and camera_type ~= '') then
        local results = queryOnNumberAndType(number, camera_type)
        if (type(results) == 'table') then
            node = prettyList(node, results)
        end
    else
        for idx_type, camera_type in pairs({ '主要', '次要', '背景' }) do
            local results = queryOnNumberAndType(number, camera_type)
            if (type(results) == 'table') then
                local title = string.format('%s角色', camera_type)
                local h4 = node:tag('h4')
                h4:wikitext(title)
                node = prettyList(node, results)
            end
        end
    end

    return node
end

return p