七日内新公告:全站维护公告
  • 你好~!欢迎来到萌娘百科镜像站!如需查看或编辑,请联系本站管理员注册账号。
  • 本镜像站和其他萌娘百科的镜像站无关,请注意分别。

Module:碧蓝航线人物换装

贴贴♀百科,万娘皆可贴的百科全书!转载请标注来源页面的网页链接,并声明引自贴贴百科。内容不可商用。
跳到导航 跳到搜索
Template-info.svg 模块文档  [创建] [刷新]
local p = {}

local Arguments = require('Module:Arguments')

local function getPageTitle()
	return mw.title.getCurrentTitle().text
end

-- 入口:按序读取 prefixN名称 / prefixN,并生成 Tabs/part 展开
-- 参数(frame.args)说明(均为可选):
--   prefix = "换装"       -- 前缀,默认 "换装"
--   num    = N            -- 显式指定要读取的数量(如果不提供,按遇到第一个缺失的 名称 停止)
--   max    = 最大扫描上限(默认 200)
function p.render(frame)
  frame = frame or mw.getCurrentFrame()

  -- 用 Module:Arguments 读取参数(父模板参数也会被合并)
  local args = Arguments.getArgs(frame, { parentFirst = true })

  local prefix = args.prefix and args.prefix or "换装"
  local max_scan = tonumber(args.max) or 200

  -- 得到页面名的 Trim_prefix(PAGENAME)
  local pageName =  getPageTitle()
  local role = frame:expandTemplate{ title = "Trim_prefix",  args = { pageName } }

  local out = {}
  -- 决定循环次数:如果提供 num 则按 num,否则按遇到第一个缺失的名称停止
  local explicit_num = tonumber(args.num)

  local i = 1
  while i <= max_scan do
    if explicit_num and i > explicit_num then break end

    local name_key = prefix .. tostring(i) .. "名称"
    local val_key = prefix .. tostring(i)

    local name = args[name_key] or ""
    local val  = args[val_key] or ""

    if name == "" then
      if not explicit_num then
        -- 遇到第一个缺失的名称且未显式指定 num -> 停止循环
        break
      end
      -- explicit_num 存在:跳过空项,但继续循环到 num
    else
      local bg = frame:expandTemplate{ title = "碧蓝航线人物背景",  args = { [1] = role, [2] = val, [3] = name} }
      local tabs = frame:expandTemplate{ title = "Tabs/part", args = { [1] = name, [2] = bg } }
      if tabs == "" then
        tabs = string.format('{{Tabs/part|%s|%s}}', name, bg)
      end
      table.insert(out, tabs)
    end

    i = i + 1
  end

  return table.concat(out)
end

return p