打开/关闭搜索
搜索
打开/关闭菜单
1.1K
4.5K
75
18.1K
Cookie☆Wiki
导航
首页
最近更改
随机页面
帮助
沙盒
特殊页面
上传文件
常用
曲奇简介
用语列表
人物一览
曲奇团体
曲奇年表
本篇列表
榜单列表
专辑列表
创作
音MAD
曲奇静画
曲奇实况
曲奇素材
BB剧场
漫画
同人游戏
曲奇实况
中华曲奇
本篇列表
人物列表
搬运者列表
汉化组列表
友情链接
Cookie☆贴吧
真夏夜的银梦贴吧
中文音MAD维基
潮学维基
银饼视频搜索站
中文曲奇维基Fandom站[已弃用]
通知
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
创建账号
登录
查看“模块:TDN”的源代码
来自Cookie☆Wiki
查看
阅读
查看源代码
查看历史
associated-pages
模块
讨论
更多操作
←
模块:TDN
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
local p = {} local kind_tdn_table = mw.loadData('Module:TDN/data') -- 例: { "人物" = { "TDN" = { "多田野", "多田野数人" }, "SZK兄贵" = "曲林静樹", … }, … } --! 根据 `类别=>TDN表记=>正常名称` 表, 返回转换为 `类别=>正常名称=>TDN表记` 形式的表. --! @param 1 可以为空, 字符串或值由字符串组成的表. 若非空, 则返回的表只包含此参数指定的类别. --! --! @feature 如果同一类别下同一名称有多个 TDN 表记, 则只会包含最靠后的那个 TDN 表记 function get_kind_rev_tdn_table(filtered_kinds) -- 返回值例: { "人物" = { "多田野" = "TDN", "多田野数人" = "TDN", "曲林静樹" = "SZK兄贵" } } if filtered_kinds == nil then filtered_kinds = kind_tdn_table elseif type(filtered_kinds) == 'string' then filtered_kinds = { [kind] = filtered_kinds } end local kind_rev_tdn_table = {} for kind, _ in pairs(filtered_kinds) do local tdn_table = kind_tdn_table[kind] local rev_table = {} for tdn, tadanos in pairs(tdn_table) do if string.sub(tdn, 1, 2) == '$!' then rev_table[tdn] = tadanos else if type(tadanos) == 'table' then for _, tadano in pairs(tadanos) do rev_table[tadano] = tdn end else rev_table[tadanos] = tdn end end end kind_rev_tdn_table[kind] = rev_table end return kind_rev_tdn_table end --! 将正常名称 TDN 化 --! @param 1 正常名称 --! @param kind 名称所属的类别 --! --! @feautre 如果同一类别下同一名称有多个 TDN 表记, 则只会返回最靠后的那个 TDN 表记 function p.tdnize() local frame = mw.getCurrentFrame() local name = frame.args[1] local kind = frame.args['kind'] or frame.args['类别'] local no_missing_prefix = require('Module:Yesno')(frame.args['no_missing_prefix'] or frame.args['无缺失前缀']) _ = name and kind or error('必须同时包含参数 "1" 与 "kind"') local kind_name_to_tdn_table = get_kind_rev_tdn_table() local name_to_tdn_table = kind_name_to_tdn_table[kind] local missing_prefix = name_to_tdn_table['$!缺失前缀'] or "" local tdn = name_to_tdn_table[name] if tdn ~= nil then return tdn elseif no_missing_prefix then return name else return mw.text.nowiki(missing_prefix .. name) end -- return name_to_tdn_table[name] or ((name_to_tdn_table['$!缺失前缀'] or "") .. name) end --! 将 TDN 表记正常化 --! @param 1 TDN 表记 --! @param kind 表记所属的类别 --! @param returns_all_result/返回全部结果 可选, 缺省为假. 如果为真, 则返回所有匹配的结果, 否则只返回查到的第一个结果 --! @param sep 可选, 缺省为 ','. 用于分割多个结果 --! --! @feature 大小写敏感 function p.detdnize() local frame = mw.getCurrentFrame() local tdn_notation = frame.args[1] local kind = frame.args['kind'] or frame.args['类别'] local all = require('Module:Yesno')(frame.args['returns_all_result'] or frame.args['返回全部结果'] or false) local sep = frame.args['sep'] or frame.args['分隔符'] or ',' _ = tdn_notation and kind or error('必须同时包含参数 "1" 与 "kind"') local result = kind_tdn_table[kind][tdn_notation] or error('未找到 TDN 表记对应的正常名称: ' .. tdn_notation) if type(result) == 'string' then return result elseif not all then return result[1] else return table.concat(result, sep) end end return p
该页面使用的模板:
模块:TDN/doc
(
查看源代码
)
返回
模块:TDN
。