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 artists = { | + | local artists = require('Module:Collection/Artists') |
− | type = "artists",
| + | local seiyuus = require('Module:Collection/Seiyuus') |
− | index = { "Akira", "Amemiya Chiyou", "Ayaki", "bob", "drew", "Fujikawa", "hatsuko", "JiJi", "Konishi", "Kujou Ichiso", "Kusada Souta", "Kuu Ro Kuro", "Mikoto Akemi", "Parsley", "Rikka", "Shibafu", "Shimada Humikane", "Shizuma Yoshinori", "Shobon", "UGUME", "Yadokari" },
| + | local types = require('Module:Collection/ShipsByType') |
− | ["Akira"] = {
| |
− | ships = {"Mizuho", "Northern Princess"}
| |
− | },
| |
− | ["Amemiya Chiyou"] = {
| |
− | url = "http://www.pixiv.net/member.php?id=2095023",
| |
− | ships = {"Samidare", "Suzukaze"}
| |
− | },
| |
− | ["Ayaki"] = {
| |
− | url = "http://www.pixiv.net/member.php?id=8611",
| |
− | ships = {"Hatsuharu", "Murakumo", "Nenohi", "Tatsuta", "Tenryuu"}
| |
− | },
| |
− | ["bob"] = {
| |
− | url = "http://www.pixiv.net/member.php?id=91521",
| |
− | ships = {"Ashigara", "Chikuma", "Haguro", "Jintsuu", "Myoukou", "Nachi", "Naka", "Sendai", "Shouhou", "Tone"}
| |
− | },
| |
− | ["drew"] = {
| |
− | url = "http://www.pixiv.net/member.php?id=193293",
| |
− | ships = {"Akebono", "Oboro", "Sazanami", "Ushio"}
| |
− | },
| |
− | ["Fujikawa"] = {
| |
− | ships = {"Akashi", "Akigumo", "Asagumo", "Asashimo", "Hayashimo", "Irako", "Kazagumo", "Kinugasa", "Kiyoshimo", "Makigumo", "Mamiya", "Naganami", "Ooyodo", "Takanami", "Yamagumo", "Yuugumo"}
| |
− | },
| |
− | ["hatsuko"] = {
| |
− | url = "http://www.pixiv.net/member.php?id=237559",
| |
− | ships = {"Aoba"}
| |
− | },
| |
− | ["JiJi"] = {
| |
− | url = "http://www.pixiv.net/member.php?id=3911",
| |
− | ships = {"Libeccio", "Littorio", "Roma"}
| |
− | },
| |
− | ["Konishi"] = {
| |
− | url = "http://www.pixiv.net/member.php?id=4258322",
| |
− | ships = {"Abukuma", "Agano", "Arare", "Arashi", "Arashio", "Asashio", "Hagikaze", "Haruna", "Hatsukaze", "Hayasui", "Hiei", "Kagerou", "Kasumi", "Kinu", "Kirishima", "Kongou", "Kumano", "Kuroshio", "Maikaze", "Michishio", "Noshiro", "Nowaki", "Ooshio", "Sakawa", "Shiranui", "Shoukaku", "Suzuya", "Yahagi", "Yura", "Yuubari", "Zuihou", "Zuikaku"}
| |
− | },
| |
− | ["Kujou Ichiso"] = {
| |
− | url = "http://www.pixiv.net/member.php?id=186655",
| |
− | ships = {"Harusame", "Kawakaze", "Murasame", "Shigure", "Shiratsuyu", "Taigei", "Umikaze", "Yuudachi"}
| |
− | },
| |
− | ["Kusada Souta"] = {
| |
− | url = "http://www.pixiv.net/member.php?id=303275",
| |
− | ships = {"Kisaragi", "Mutsuki", "Uzuki", "Yayoi"}
| |
− | },
| |
− | ["Kuu Ro Kuro"] = {
| |
− | url = "http://www.pixiv.net/member.php?id=29389",
| |
− | ships = {"Akitsu Maru", "Amagi", "Chitose", "Chiyoda", "Hiyou", "Isuzu", "Junyou", "Katsuragi", "Maruyu", "Nagara", "Natori", "Ryuujou", "Unryuu"}
| |
− | },
| |
− | ["Mikoto Akemi"] = {
| |
− | url = "http://www.pixiv.net/member.php?id=501378",
| |
− | ships = {"Atago", "Takao"}
| |
− | },
| |
− | ["Parsley"] = {
| |
− | url = "http://www.pixiv.net/member.php?id=414162",
| |
− | ships = {"Choukai", "Hamakaze", "Isokaze", "Kashima", "Katori", "Maya", "Tanikaze", "Urakaze"}
| |
− | },
| |
− | ["Rikka"] = {
| |
− | url = "http://www.pixiv.net/member.php?id=1926153",
| |
− | ships = {"Fusou", "Yamashiro"}
| |
− | },
| |
− | ["Shibafu"] = {
| |
− | url = "http://www.pixiv.net/member.php?id=312614",
| |
− | ships = {"Akagi", "Ayanami", "Fubuki", "Hatsuyuki", "Hiryuu", "Houshou", "Hyuuga", "I-401", "Ise", "Isonami", "Kaga", "Kitakami", "Mikuma", "Miyuki", "Mogami", "Ooi", "Shikinami", "Shirayuki", "Souryuu"}
| |
− | },
| |
− | ["Shimada Humikane"] = {
| |
− | url = "https://twitter.com/humikane",
| |
− | ships = {"Bismarck", "Graf Zeppelin", "Prinz Eugen", "Taihou", "U-511", "Ro-500", "Z1", "Z3"}
| |
− | },
| |
− | ["Shizuma Yoshinori"] = {
| |
− | url = "http://www.pixiv.net/member.php?id=141206",
| |
− | ships = {"Akitsushima", "Akizuki", "Amatsukaze", "Musashi", "Mutsu", "Nagato", "Shimakaze", "Teruzuki", "Tokitsukaze", "Yamato", "Yukikaze"}
| |
− | },
| |
− | ["Shobon"] = {
| |
− | url = "http://www.pixiv.net/member.php?id=2572017",
| |
− | ships = {"I-168", "I-19", "I-58", "I-8"}
| |
− | },
| |
− | ["UGUME"] = {
| |
− | url = "http://www.pixiv.net/member.php?id=1457830",
| |
− | ships = {"Furutaka", "Kako", "Kiso", "Kuma", "Tama"}
| |
− | },
| |
− | ["Yadokari"] = {
| |
− | url = "http://www.pixiv.net/member.php?id=1828868",
| |
− | ships = {"Akatsuki", "Fumizuki", "Hatsushimo", "Hibiki", "Верный", "Ikazuchi", "Inazuma", "Kikuzuki", "Mikazuki", "Mochizuki", "Nagatsuki", "Satsuki", "Wakaba"}
| |
− | },
| |
− | }
| |
| | | |
− | local seiyuus = { | + | local function requireSeasonModule(name) |
− | type = "seiyuus",
| + | local success, data = U.requireModule('Data/Season/' .. name) |
− | index = { "Bridcut Sarah Emi", "Endou Aya", "Fujita Saki", "Hayami Saori", "Hayasaka Kozue", "Hidaka Rina", "Horie Yui", "Iguchi Yuka", "Ise Mariya", "Ishigami Shizuka", "Kanemoto Hisako", "Kawasumi Ayako", "Kayano Ai", "Kitou Akari", "Kobayashi Motoko", "Komatsu Mana", "Komatsu Mikako", "Kuno Misaki", "Misato", "Miyagawa Wakana", "Nakajima Megumi", "Nomizu Iori", "Noto Mamiko", "Ogura Yui", "Ootsubo Yuka", "Ozawa Ari", "Sakura Ayane", "Suzaki Aya", "Taketatsu Ayana", "Taneda Risa", "Tanibe Yumi", "Touyama Nao", "Uesaka Sumire", "Yamada Yuki" },
| + | if not success then |
− | ["Bridcut Sarah Emi"] = {
| + | success, data = U.requireModule('Seasonal/' .. name) |
− | url = "http://myanimelist.net/people/19371/Sarah_Emi_Bridcut",
| + | end |
− | ships = {"Hatsukaze", "Kumano", "Maikaze", "Suzuya", "Yuubari", },
| + | if not success then |
− | },
| + | data = {index = {}, ships = {}} |
− | ["Endou Aya"] = {
| + | end |
− | url = "http://myanimelist.net/people/54/Aya_Endou",
| + | return data |
− | ships = {"Bismarck", "Z1", "Z3", },
| + | end |
− | },
| |
− | ["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", "Italia", "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 = {
| + | function findType(ship) |
− | type = "types",
| |
− | index = { "Destroyers", "Light Cruisers", "Heavy Cruisers", "Battleships", "Light Carriers", "Standard Carriers", "Submarines", "Auxiliaries", "NPC", "Bosses" },
| |
− | ["Destroyers"] = {
| |
− | 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" }
| |
− | },
| |
− | ["Light Cruisers"] = {
| |
− | ships = { "Abukuma", "Agano", "Isuzu", "Jintsuu", "Kinu", "Kiso", "Kitakami", "Kuma", "Nagara", "Naka", "Natori", "Noshiro", "Ooi", "Ooyodo", "Sakawa", "Sendai", "Tama", "Tatsuta", "Tenryuu", "Yahagi", "Yura", "Yuubari" }
| |
− | },
| |
− | ["Heavy Cruisers"] = {
| |
− | ships = { "Aoba", "Ashigara", "Atago", "Chikuma", "Choukai", "Furutaka", "Haguro", "Kako", "Kinugasa", "Kumano", "Maya", "Mikuma", "Mogami", "Myoukou", "Nachi", "Prinz Eugen", "Suzuya", "Takao", "Tone" }
| |
− | },
| |
− | ["Battleships"] = {
| |
− | ships = { "Bismarck", "Fusou", "Haruna", "Hiei", "Hyuuga", "Ise", "Kirishima", "Kongou", "Littorio", "Italia", "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", "Ro-500" }
| |
− | },
| |
− | ["Auxiliaries"] = {
| |
− | ships = { "Akashi", "Akitsu Maru", "Akitsushima", "Hayasui", "Kashima", "Katori", "Mizuho", "Taigei" }
| |
− | },
| |
− | ["NPC"] = {
| |
− | ships = { "Akashi NPC", "Irako", "Mamiya", "Ooyodo NPC" }
| |
− | },
| |
− | ["Bosses"] = {
| |
− | ships = { "Northern Princess" }
| |
− | },
| |
− | }
| |
− | | |
− | function find_type(ship) | |
| for type, data in pairs(types) do | | for type, data in pairs(types) do |
| if data.ships and Utils.find(data.ships, ship) then | | if data.ships and Utils.find(data.ships, ship) then |
Line 274: |
Line 28: |
| end | | end |
| | | |
− | function gen(args, tbl, format) | + | function genToc(args, tbl, format) |
| local result = "" | | local result = "" |
| local i = 0 | | local i = 0 |
Line 284: |
Line 38: |
| 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]]", args.art and (tbl.type == "types" and k or find_type(ship)) or 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) |
Line 299: |
Line 53: |
| local Seasonal = {} | | 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, 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 |
Line 308: |
Line 63: |
| ]===], args.text or "Ship girls", n) .. r .. "|}" end) | | ]===], args.text or "Ship girls", n) .. r .. "|}" end) |
| .. "\n" .. | | .. "\n" .. |
− | gen(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%%" | + | 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%%|[[%s]] (%s) | | !width=20%%|[[%s]] (%s) |
| ! | | ! |
| ]===], args.art and "Glossary#List_of_Vessels_by_Artist|Artist" or "Glossary#List_of_Vessels_by_Seiyuu|Seiyuu", 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 |