Re:从零开始的异世界生活 Wiki
Re:从零开始的异世界生活 Wiki

local p = {}

--- 1 2 3 ...
local arabicNumbers = {}
for i = 1, 64 do
    arabicNumbers[i] = i
end

local partsOfSeries = {
    -- 尤里乌斯·尤克历乌斯的言出必行备忘录、芙蕾德莉卡和佩特拉的女仆小姐Days 等
    -- 第一部没有Ⅰ后缀
    { '', 'Ⅱ', 'Ⅲ', 'Ⅳ', 'Ⅴ', 'Ⅵ', 'Ⅶ', 'Ⅷ', 'Ⅸ', 'Ⅹ', 'Ⅺ', 'Ⅻ' },

    -- 1卷、1章、1集、1话 等
    arabicNumbers,

    -- 从零开始的英雄谭、剑鬼战歌 等
    { '一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '终' },

    -- 狼之国/弱者该死毋需慈悲、亲竜之国/梅丽的魔兽见闻录、亲竜之国/迷途子搜索记录、金狮子与剑圣 狮子奋迅记 等
    { 'ZERO 亚拉基亚', 'ZERO 文森特', 'ZERO 普莉希拉', '①', '②', '③', '④', '⑤', '⑥', '⑦', '⑧', 'ZERO 九神将', '⑨', '⑩', '⑪', '⑫', '⑬', '⑭', '⑮', '⑯', '⑰', '⑱', '⑲', '⑳' },

    -- Ex 系列,无共同前后缀
    { '狮子王所见之梦', '剑鬼恋歌', '剑鬼恋谭', '最优纪行', '绯色姬谭' },

    -- Lugunican Papers、Sword Identity、赫炎的剑狼 等
    { '前篇', '中篇', '中篇2', '后篇' },

    -- 库珥修大人的伟人传
    { '开幕☆', '序幕 誓言之章☆', '序幕 菲莉丝华丽诞生☆', '序幕 「青」的学习', '外传 侍从不在的日子' },

    -- 加菲尔与拉姆、
    { '乖僻别扭的恋爱物语', '乖僻别扭执拗的恋爱物语', '乖僻别扭执拗的纠结恋爱物语', '乖僻别扭执拗的纠结恋爱物语ZERO' },

    -- 大精灵帕克的
    { '喵喵好日子', '喵喵喵好日子', '喵喵鬼点子' },

    -- 图书管理员碧翠丝的业务日志·
    { '重开', '第二页', '第三页' },

    -- 艾米莉娅与拉姆的主从
    { '凹凸', '凹凹凸凸' },

    -- 菲鲁特酱
    { '的工作', '的监禁生活', '看见了!', '登台亮相', '收留小混混', '组建愚连队' },

    -- 安娜斯塔西娅的
    { '纤弱手腕繁盛记', '搬迁画卷', '发迹纪念日', '卡拉拉基商人道', '最优秀游记' },

    -- 艾米莉娅的
    { '王都观光记', '星空教室', '初次约会' },

    -- 剑鬼恋谭——
    { '新娘之父篇', '地龙之都,弗兰德斯篇', '蜜月背后篇' },

    -- 碧翠丝与蕾姆的
    { '扫除好辛苦', '服侍好辛苦' },

    -- 碧翠丝之大家都很
    { '困扰呢', '困扰呢!', '困扰呢!困扰的!' },

    -- 普莉希拉
    { '的妾身万岁!余兴篇', '的妾身万岁!酒鬼老爹篇', '大人的妾身万岁!阴谋之影篇', '大人的妾身万岁!宣战布告篇', '大人的妾身万岁!动乱预感篇' },

    -- 艾米莉娅生日系列,无共同前后缀
    { '艾米莉娅的 Very Happy Birthday', 'Memory Snow 前日谭/Liar Days', '冰结之绊 前日谭/冰结的日常', 'Happy Diary', 'Two Witches Tea Party', 'Two Witches\' Eventful Journey' },

    -- 双子生日系列,无共同前后缀
    { '祝福日Ex 蕾姆的生日派对', '祝福之日Ex 蕾姆琳之日', '隐世村的鬼姐妹,欢迎来到晚会', '隐世村的鬼姐妹。——幸福的噩梦', '隐世村的鬼姐妹 ~鬼的扮角~', '隐世村的鬼姐妹 ~夜想姐妹~', '隐世村的鬼姐妹 ~Pleiades before after~', '隐世村的鬼姐妹 ~祈祷的千纸鹤篇~' },

    -- Re0 Visual Complete
    { 'Vol.1 Emilia', 'Vol.2 Ram', 'Vol.3 Rem' },

    -- 动画系列,无共同前后缀
    { 'Re:从零开始的前日谭 冰结之绊', 'Re:从零开始的前日谭 隐世村的鬼姐妹', 'Re:从零开始的前日谭 阵营结成秘话', 'Re:从IF开始的异世界生活', 'Another Memory Snow', '冰结之绊 Before Memories', 'Re:从零开始的前日谭 Apocalypse Girls', 'Re:从零开始的前日谭 逝去之日,挚爱随行', 'Re:从零开始反复的异世界生活', 'Another World, Another Episode' },

    -- 蕾姆
    { '与昴相遇', '的咖啡拉花', '人生中最美好的日子', '的少女心超复杂' },

    -- 拉姆系列,无共同前后缀
    { '拉姆拒绝搭讪记', '与拉姆一起的晚间学习会', '拉姆的姐姐之心很复杂' },

    -- 漫画特典系列,无共同前后缀
    { '混混的独狼,菲鲁特酱骚动的日常', 'Re:Zero Visual Complete', '笨拙的二人组', 'Re:从零开始的异世界生活幕后', '菜月·昴华丽的管家生活', '罗兹瓦尔邸女子会(浴场篇)', '罗兹瓦尔邸女子会(更衣间篇)', '思君之决战前夜' },

    -- 魔女的
    { '茶会之余', '茶会之余 魔女的条件', '茶会之余 魔女们的反省会', '茶会之余 One Wild Night(前篇)', '茶会之余 One Wild Night(后篇)', '茶会之余 Omega in Wonderland(前篇)', '茶会之余 Omega in Wonderland(中篇)', '茶会之余 Omega in Wonderland(后篇)' },

    -- 暂定蕾姆的疑心暗鬼/
    { '魔鬼念佛假慈悲', '铁打的汉子也会病倒', '如虎添翼', '人间自有真情在', '阎王不在小鬼翻天', '人心莫测', '如立奇功', '鬼の目にも涙编' },

    -- 杂志版剑鬼恋歌漫画
    {
        '剑鬼恋歌前传',
        '剑鬼恋歌第1话',
        '剑鬼恋歌第2话',
        '剑鬼恋歌第3话',
        '剑鬼恋歌第4话',
        '剑鬼恋歌第5话',
        '剑鬼恋歌第6话',
        '剑鬼恋歌第7话',
        '剑鬼恋歌第8话',
        '剑鬼恋歌第9话',
        '剑鬼恋歌第10话',
        '剑鬼恋歌第11话',
        '剑鬼恋歌第12话',
        '剑鬼恋歌第13话',
        '剑鬼恋歌第14话',
        '剑鬼恋歌第15话',
        '剑鬼恋歌第16话',
        '剑鬼恋歌第17话',
        '剑鬼恋歌第18话',
        '剑鬼恋歌第19话',
        '剑鬼恋歌第19-1话',
        '剑鬼恋歌第19-2话',
        '剑鬼恋歌第20话',
        '剑鬼恋歌第21话',
        '剑鬼恋歌第22话',
        '剑鬼恋歌第23话',
        '剑鬼恋歌第24话',
        '剑鬼恋歌第25话',
        '剑鬼恋歌第26话',
        '剑鬼恋歌第27话',
    },
}

function p.get(target)
    local finalPrefix, finalSuffix, finalParts
    for _, parts in ipairs(partsOfSeries) do
        for _, part in ipairs(parts) do
            local partEscaped = mw.ustring.gsub(part, '%-', '%-')
            local pattern = '^(.*)' .. partEscaped .. '(%D*)$'
            local prefix, suffix = mw.ustring.match(target, pattern)
            if prefix then
                finalPrefix = prefix
                finalSuffix = suffix
                finalParts = parts
            end
        end
    end

    assert(finalPrefix and finalSuffix and finalParts)

    local series = {}
    for _, part in ipairs(finalParts) do
        table.insert(series, finalPrefix .. part .. finalSuffix)
    end

    mw.logObject({ prefix = finalPrefix, suffix = finalSuffix, parts = finalParts, series = series }, 'Series')
    return series
end

return p