Changes

m
47 revisions imported
Line 1: Line 1: −
local Utils = require('Module:Utils')
+
local U = require('Module:Core')
 +
local Utils = require('Module:Core')
 +
local format = require('Module:Core').format
 
local getArgs = require('Module:GetArgs')
 
local getArgs = require('Module:GetArgs')
local Ship = require('Module:Ship')
     −
local seiyuus = {
+
local artists = require('Module:Collection/Artists')
    ["Bridcut Sarah Emi"] = {
+
local seiyuus = require('Module:Collection/Seiyuus')
        url = "http://myanimelist.net/people/19371/Sarah_Emi_Bridcut",
+
local types = require('Module:Collection/ShipsByType')
        ships = {"Hatsukaze", "Kumano", "Maikaze", "Suzuya", "Yuubari", },
  −
    },
  −
    ["Endou Aya"] = {
  −
        url = "http://myanimelist.net/people/54/Aya_Endou",
  −
        ships = {"Bismarck", "Z1", "Z3", },
  −
    },
  −
    ["Fujita Saki"] = {
  −
        url = "http://myanimelist.net/people/504",
  −
        ships = {"Akagi", "Fusou", "Kagerou", "Kuroshio", "Shiranui", "Tokitsukaze", "Yamashiro", "Yukikaze", },
  −
    },
  −
    ["Hayami Saori"] = {
  −
        url = "http://myanimelist.net/people/869/Saori_Hayami",
  −
        ships = {"Graf Zeppelin", "Hagikaze", },
  −
    },
  −
    ["Hayasaka Kozue"] = {
  −
        url = null,
  −
        ships = {"Akebono", "Oboro", "Sazanami", "Ushio", },
  −
    },
  −
    ["Hidaka Rina"] = {
  −
        url = "http://myanimelist.net/people/5250/Rina_Hidaka",
  −
        ships = {"Fumizuki", "Kikuzuki", "Kisaragi", "Mikazuki", "Mochizuki", "Mutsuki", "Nagatsuki", "Ryuujou", "Satsuki", "Uzuki", "Yayoi", },
  −
    },
  −
    ["Horie Yui"] = {
  −
        url = "http://myanimelist.net/people/28/Yui_Horie",
  −
        ships = {"Amagi", "Asagumo", "Yamagumo", },
  −
    },
  −
    ["Iguchi Yuka"] = {
  −
        url = "http://myanimelist.net/people/885/Yuka_Iguchi",
  −
        ships = {"Chikuma", "Isuzu", "Kaga", "Nagara", "Natori", "Tatsuta", "Tenryuu", "Tone", },
  −
    },
  −
    ["Ise Mariya"] = {
  −
        url = "http://myanimelist.net/people/655/Mariya_Ise",
  −
        ships = {"I-401", },
  −
    },
  −
    ["Ishigami Shizuka"] = {
  −
        url = "http://myanimelist.net/people/28755/Shizuka_Ishigami",
  −
        ships = {"Kawakaze", "Mizuho", "Umikaze", },
  −
    },
  −
    ["Kanemoto Hisako"] = {
  −
        url = "http://myanimelist.net/people/8555/Hisako_Kanemoto",
  −
        ships = {"Harusame", "Hayashimo", "Kiyoshimo", },
  −
    },
  −
    ["Kawasumi Ayako"] = {
  −
        url = "http://myanimelist.net/people/13/Ayako_Kawasumi",
  −
        ships = {"Isokaze", "Ooyodo", "Unryuu", },
  −
    },
  −
    ["Kayano Ai"] = {
  −
        url = "http://myanimelist.net/people/10765/",
  −
        ships = {"Arashi", "Asashimo", "Kashima", "Katori", "Katsuragi", "Ro-500", "U-511", },
  −
    },
  −
    ["Kitou Akari"] = {
  −
        url = "https://ja.wikipedia.org/wiki/%E9%AC%BC%E9%A0%AD%E6%98%8E%E9%87%8C",
  −
        ships = {"Kazagumo", "Libeccio", },
  −
    },
  −
    ["Kobayashi Motoko"] = {
  −
        url = "http://myanimelist.net/people/12285/Motoko_Kobayashi",
  −
        ships = {"Hatsuharu", "Hatsushimo", "Nenohi", "Wakaba", },
  −
    },
  −
    ["Komatsu Mana"] = {
  −
        url = "http://myanimelist.net/people/12941/Mana_Komatsu",
  −
        ships = {"Hamakaze", "Tanikaze", "Urakaze", "Zuihou", },
  −
    },
  −
    ["Komatsu Mikako"] = {
  −
        url = "http://myanimelist.net/people/10071/Komatsu_Mikako",
  −
        ships = {"Akitsushima", "Teruzuki", },
  −
    },
  −
    ["Kuno Misaki"] = {
  −
        url = "http://myanimelist.net/people/11641/Misaki_Kuno",
  −
        ships = {"Littorio", "Roma", "Takanami", },
  −
    },
  −
    ["Misato"] = {
  −
        url = "http://myanimelist.net/people/12759/Misato",
  −
        ships = {"I-19", "I-8", "Musashi", },
  −
    },
  −
    ["Miyagawa Wakana"] = {
  −
        url = "http://www.animenewsnetwork.com.au/encyclopedia/people.php?id=98235",
  −
        ships = {"Arare", "Arashio", "Asashio", "Chitose", "Chiyoda", "Kasumi", "Michishio", "Ooshio", },
  −
    },
  −
    ["Nakajima Megumi"] = {
  −
        url = "http://myanimelist.net/people/1105/Megumi_Nakajima",
  −
        ships = {"I-168", "I-58", "Kinugasa", "Mikuma", },
  −
    },
  −
    ["Nomizu Iori"] = {
  −
        url = "http://myanimelist.net/people/8956/Iori_Nomizu",
  −
        ships = {"Abukuma", "Hayasui", "Kinu", "Shoukaku", "Zuikaku", },
  −
    },
  −
    ["Noto Mamiko"] = {
  −
        url = "http://myanimelist.net/people/40/Mamiko_Noto",
  −
        ships = {"Akitsu Maru", "Maruyu", "Taihou", },
  −
    },
  −
    ["Ogura Yui"] = {
  −
        url = "http://myanimelist.net/people/10981/Yui_Ogura",
  −
        ships = {"Amatsukaze", "Ryuuhou", "Taigei", },
  −
    },
  −
    ["Ootsubo Yuka"] = {
  −
        url = "http://myanimelist.net/people/12452/Yuka_Ootsubo",
  −
        ships = {"Furutaka", "Hiyou", "Hyuuga", "Ise", "Junyou", "Kako", "Kitakami", "Ooi", },
  −
    },
  −
    ["Ozawa Ari"] = {
  −
        url = "http://myanimelist.net/people/27395/Ari_Ozawa",
  −
        ships = {"Akizuki", "Nowaki", "Prinz Eugen", },
  −
    },
  −
    ["Sakura Ayane"] = {
  −
        url = "http://myanimelist.net/people/11622/Ayane_Sakura",
  −
        ships = {"Jintsuu", "Kiso", "Kuma", "Mutsu", "Nagato", "Naka", "Sendai", "Shimakaze", "Tama", },
  −
    },
  −
    ["Suzaki Aya"] = {
  −
        url = "http://myanimelist.net/people/19834/Aya_Suzaki",
  −
        ships = {"Akatsuki", "Aoba", "Hibiki", "Houshou", "Ikazuchi", "Inazuma", "Mogami", },
  −
    },
  −
    ["Taketatsu Ayana"] = {
  −
        url = "http://myanimelist.net/people/6996/Ayana_Taketatsu",
  −
        ships = {"Akigumo", "Makigumo", "Naganami", "Yamato", "Yuugumo", },
  −
    },
  −
    ["Taneda Risa"] = {
  −
        url = "http://myanimelist.net/people/16135/Risa_Taneda",
  −
        ships = {"Akashi", "Ashigara", "Haguro", "Myoukou", "Nachi", "Samidare", "Shouhou", "Suzukaze", },
  −
    },
  −
    ["Tanibe Yumi"] = {
  −
        url = "http://myanimelist.net/people/35951",
  −
        ships = {"Murasame", "Shigure", "Shiratsuyu", "Yura", "Yuudachi", },
  −
    },
  −
    ["Touyama Nao"] = {
  −
        url = "http://myanimelist.net/people/11184/Nao_Touyama",
  −
        ships = {"Atago", "Ayanami", "Choukai", "Haruna", "Hiei", "Kirishima", "Kongou", "Maya", "Shikinami", "Takao", },
  −
    },
  −
    ["Uesaka Sumire"] = {
  −
        url = "http://myanimelist.net/people/14441/Sumire_Uesaka",
  −
        ships = {"Fubuki", "Hatsuyuki", "Hiryuu", "Isonami", "Miyuki", "Murakumo", "Shirayuki", "Souryuu", },
  −
    },
  −
    ["Yamada Yuki"] = {
  −
        url = "http://myanimelist.net/people/28053/Yuki_Yamada",
  −
        ships = {"Agano", "Noshiro", "Sakawa", "Yahagi", },
  −
    },
  −
}
     −
local types = {
+
local function requireSeasonModule(name)
    ["Destroyers"] = {
+
  local success, data = U.requireModule('Data/Season/' .. name)
        ships = { "Akatsuki", "Akebono", "Akigumo", "Akizuki", "Amatsukaze", "Arare", "Arashi", "Arashio", "Asagumo", "Asashimo", "Asashio", "Ayanami", "Fubuki", "Fumizuki", "Hagikaze", "Hamakaze", "Harusame", "Hatsuharu", "Hatsukaze", "Hatsushimo", "Hatsuyuki", "Hayashimo", "Hibiki", "Ikazuchi", "Inazuma", "Isokaze", "Isonami", "Kagerou", "Kasumi", "Kawakaze", "Kazagumo", "Kikuzuki", "Kisaragi", "Kiyoshimo", "Kuroshio", "Libeccio", "Maikaze", "Makigumo", "Michishio", "Mikazuki", "Miyuki", "Mochizuki", "Murakumo", "Murasame", "Mutsuki", "Naganami", "Nagatsuki", "Nenohi", "Nowaki", "Oboro", "Ooshio", "Samidare", "Satsuki", "Sazanami", "Shigure", "Shikinami", "Shimakaze", "Shiranui", "Shiratsuyu", "Shirayuki", "Suzukaze", "Takanami", "Tanikaze", "Teruzuki", "Tokitsukaze", "Umikaze", "Urakaze", "Ushio", "Uzuki", "Wakaba", "Yamagumo", "Yayoi", "Yukikaze", "Yuudachi", "Yuugumo", "Z1", "Z3" }
+
  if not success then
    },
+
     success, data = U.requireModule('Seasonal/' .. name)
    ["Light Cruisers"] = {
+
  end
        ships = { "Abukuma", "Agano", "Isuzu", "Jintsuu", "Katori", "Kinu", "Kiso", "Kitakami", "Kuma", "Nagara", "Naka", "Natori", "Noshiro", "Ooi", "Ooyodo", "Sakawa", "Sendai", "Tama", "Tatsuta", "Tenryuu", "Yahagi", "Yura", "Yuubari" }
+
  if not success then
     },
+
     data = {index = {}, ships = {}}
    ["Heavy Cruisers"] = {
+
  end
        ships = { "Aoba", "Ashigara", "Atago", "Chikuma", "Choukai", "Furutaka", "Haguro", "Kako", "Kinugasa", "Kumano", "Maya", "Mikuma", "Mogami", "Myoukou", "Nachi", "Prinz Eugen", "Suzuya", "Takao", "Tone" }
+
  return data
    },
+
end
     ["Battleships"] = {
  −
        ships = { "Bismarck", "Fusou", "Haruna", "Hiei", "Hyuuga", "Ise", "Kirishima", "Kongou", "Littorio", "Musashi", "Mutsu", "Nagato", "Roma", "Yamashiro", "Yamato" }
  −
    },
  −
    ["Light Carriers"] = {
  −
        ships = { "Chitose", "Chiyoda", "Hiyou", "Houshou", "Jun'you", "Ryuuhou", "Ryuujou", "Shouhou", "Zuihou" }
  −
    },
  −
    ["Standard Carriers"] = {
  −
        ships = { "Akagi", "Amagi", "Graf Zeppelin", "Hiryuu", "Kaga", "Katsuragi", "Shoukaku", "Souryuu", "Taihou", "Unryuu", "Zuikaku" }
  −
    },
  −
    ["Submarines"] = {
  −
        ships = { "I-168", "I-19", "I-401", "I-58", "I-8", "Maruyu", "U-511" }
  −
    },
  −
    ["Auxiliaries"] = {
  −
        ships = { "Akashi", "Akitsu Maru", "Akitsushima", "Hayasui", "Kashima", "Katori", "Mizuho", "Taigei" }
  −
    },
  −
}
     −
local Seasonal = {}
+
function findType(ship)
 +
    for type, data in pairs(types) do
 +
        if data.ships and Utils.find(data.ships, ship) then
 +
            return type
 +
        end
 +
    end
 +
    return "?"
 +
end
   −
function gen(args, tbl, type, format)
+
function genToc(args, tbl, format)
 
     local result = ""
 
     local result = ""
 
     local i = 0
 
     local i = 0
 
     local n = 0
 
     local n = 0
     for k, data in pairs(tbl) do
+
     for _, k in ipairs(tbl.index) do
 +
        local data = tbl[k]
 
         local ships = Utils.filter(data.ships, function(ship) return Utils.find(args, ship) end)
 
         local ships = Utils.filter(data.ships, function(ship) return Utils.find(args, ship) end)
 
         if #ships > 0 then
 
         if #ships > 0 then
 
             i = i + 1
 
             i = i + 1
 
             n = n + #ships
 
             n = n + #ships
             local ships_str = table.concat(Utils.map(ships, function(ship) return string.format("[[#%s|%s]]", ship, ship) end), ", ")
+
             local ships_str = table.concat(Utils.map(ships, function(ship) return string.format("[[#%s|%s]]", args.art and (tbl.type == "types" and k or findType(ship)) or ship, ship) end), ", ")
 
             if data.url then
 
             if data.url then
 
                 result = result .. string.format("|-\n|[%s %s]\n|%s\n", data.url, k, ships_str)
 
                 result = result .. string.format("|-\n|[%s %s]\n|%s\n", data.url, k, ships_str)
             elseif type == "types" then
+
             elseif tbl.type == "types" then
                 result = result .. string.format("|-\n|[[#%s|%s]] (%s)\n|%s\n", args[k] or k, k, #ships, ships_str)
+
                 result = result .. string.format("|-\n|[[#%s|%s]] (%s)\n|%s\n", args[k] and (k .. " 2") or k, k, #ships, ships_str)
 
             else
 
             else
 
                 result = result .. string.format("|-\n|%s\n|%s\n", k, ships_str)
 
                 result = result .. string.format("|-\n|%s\n|%s\n", k, ships_str)
Line 193: Line 51:  
end
 
end
    +
local Seasonal = {}
 +
 +
-- Template:SeasonalTOC
 
function Seasonal.toc(frame)
 
function Seasonal.toc(frame)
 
     local args = getArgs{frame = frame:getParent()}
 
     local args = getArgs{frame = frame:getParent()}
 
     return
 
     return
         gen(args, types, "types", function(r, i, n) return string.format([===[{| class="mw-collapsible mw-collapsed wikitable typography-xl-optout" style="width:100%%"
+
         genToc(args, types, function(r, i, n) return string.format([===[{| class="mw-collapsible mw-collapsed wikitable typography-xl-optout" style="width:100%%"
 
|-
 
|-
 
!width=20%%|Class
 
!width=20%%|Class
!Ship girls (%s)
+
!%s (%s)
]===], n) .. r .. "|}" end)
+
]===], args.text or "Ship girls", n) .. r .. "|}" end)
 
         .. "\n" ..
 
         .. "\n" ..
         gen(args, seiyuus, "seiyuus", function(r, i, n) return string.format([===[{| class="mw-collapsible mw-collapsed wikitable typography-xl-optout" style="width:100%%"
+
         genToc(args, args.art and artists or seiyuus, function(r, i, n) return string.format([===[{| class="mw-collapsible mw-collapsed wikitable typography-xl-optout" style="width:100%%"
 
|-
 
|-
!width=20%%|[[Glossary#List_of_Vessels_by_Seiyuu|Seiyuu]] (%s)
+
!width=20%%|[[%s]] (%s)
 
!
 
!
]===], i) .. r .. "|}" end)
+
]===], args.art and "Glossary#List_of_Vessels_by_Artist|Artist" or "Glossary#List_of_Vessels_by_Seiyuu|Seiyuu", i) .. r .. "|}" end)
 +
 
 +
end
 +
 
 +
-- Template:SeasonalQuotesInclude
 +
function Seasonal.include(frame)
 +
 
 +
    local ship_row_template = [=[|align="center" rowspan="${rowspan}"|[[${ship}]]
 +
]=]
 +
 
 +
    local id_string_template = [[id="${ship}"]]
 +
 
 +
    local quote_template = [=[|- ${id_string}
 +
${ship_row}|align="center"|<span class="audio-button click-parent">[[File:${ship}${form} ${season}${line}.ogg|Play]]</span>
 +
|lang="ja"|${ja}
 +
|${en}
 +
|${note}]=]
 +
 
 +
    local args = getArgs{frame = frame:getParent()}
 +
    local season, type = args[1], args[2]
 +
    local only = args.only
 +
    local result = {
 +
        "|-",
 +
        string.format([=[!colspan="5"|From [[Seasonal/%s|%s]]]=], season, season)
 +
    }
 +
    local seasonal_data = requireSeasonModule(season)
 +
    for _, ship in ipairs(seasonal_data.index[type]) do
 +
        if only and Utils.find(args, ship) or not only and not Utils.find(args, ship) then
 +
            local ship_data = seasonal_data.ships[ship]
 +
            local quotes = Utils.ifilter(ship_data, function(quote)
 +
                return not Utils.find(args, string.format("%s/%s", ship, quote.line or ""))
 +
            end)
 +
            for i, quote in ipairs(quotes) do
 +
                local note = args[ship .. "." .. "note"]
 +
                if note and note == "nil" then
 +
                    note = ""
 +
                elseif note and note:sub(-1) == "+" then
 +
                    note = note:sub(1, -2) .. (quote.note or "")
 +
                end
 +
                table.insert(result, format{
 +
                    quote_template,
 +
                    id_string = i > 1 and "" or format{
 +
                        id_string_template,
 +
                        ship = ship,
 +
                    },
 +
                    ship_row = i > 1 and "" or format{
 +
                        ship_row_template,
 +
                        rowspan = #quotes,
 +
                        ship = ship,
 +
                    },
 +
                    ship = quote.ship or ship,
 +
                    form = quote.form or "",
 +
                    season = quote.season or season,
 +
                    line = quote.line and " " .. quote.line or "",
 +
                    ja = quote.ja or "",
 +
                    en = quote.en or "",
 +
                    note = (quote.ship and "''As " .. quote.ship .. "''<br>" or "") .. (quote.line and "''" .. quote.line .. "''<br>" or "") .. (note or quote.note or ""),
 +
                })
 +
            end
 +
        end
 +
    end
 +
    return table.concat(result, "\n")
    
end
 
end
 +
 
return Seasonal
 
return Seasonal
Bots, gkautomate
12,557

edits