• Welcome to the Kancolle Wiki!
  • If you have any questions regarding site content, account registration, etc., please visit the KanColle Wiki Discord

Difference between revisions of "Module:ShipSeasonalQuotes"

From Kancolle Wiki
Jump to navigation Jump to search
Line 17: Line 17:
 
}
 
}
  
local seasons = {
+
local seasons = require("Module:Collection/Seasons")
    "Christmas 2013",
 
    "Christmas 2014",
 
    "End of Year 2014",
 
    "New Year 2015",
 
    "New Year 2016",
 
    "Second Anniversary",
 
    "Setsubun 2015",
 
    "Setsubun 2016",
 
    "Setsubun 2017",
 
    "Valentines 2015",
 
    "White Day 2015",
 
    "Rainy Season 2017",
 
    "Fall 2017",
 
}
 
  
 
local ShipSeasonalQuotes = {}
 
local ShipSeasonalQuotes = {}
Line 51: Line 37:
 
end
 
end
  
 +
-- Template:ShipSeasonalQuotes
 
function ShipSeasonalQuotes.format(frame, args)
 
function ShipSeasonalQuotes.format(frame, args)
 
     args = args or Utils.getTemplateArgs(frame)
 
     args = args or Utils.getTemplateArgs(frame)

Revision as of 11:38, 6 October 2017

Documentation for this module may be created at Module:ShipSeasonalQuotes/doc

local Utils = require("Module:Utils")
local format = require("Module:StringInterpolation").format

local templates = {
    header = [[{| class="wikitable typography-xl-optout" style="width:100%;"
!style="width:10%;"|Event
!Japanese
!English
!Note]],
    footer = "|}",
    row = [=[|-
|nowrap="nowrap"|[[Seasonal/${season}|${season}]]<br><span class="audio-button click-parent">[[Media:${ship} ${season}.ogg|Play]]</span>
|lang="ja"|${ja}
|${en}
|${note}]=],
    as_ship = [[''As ${ship}'']]
}

local seasons = require("Module:Collection/Seasons")

local ShipSeasonalQuotes = {}

function addRow(result, seasonData, season, ship, note_prefix)
    local shipData = seasonData.ships[ship]
    if shipData then
        for _, lineData in ipairs(shipData) do
            table.insert(result, format{
                templates.row,
                ship = ship,
                season = season,
                ja = lineData.ja,
                en = lineData.en,
                note = (note_prefix or "") .. (note_prefix and lineData.note and "<br>" or "") .. (lineData.note or ""),
            })
        end
     end
end

-- Template:ShipSeasonalQuotes
function ShipSeasonalQuotes.format(frame, args)
    args = args or Utils.getTemplateArgs(frame)
    local ship = args.explicit["1"] or args.implicit.pagename
    local ship2 = args.explicit["2"]
    local result = {}
    table.insert(result, templates.header)
    for _, season in ipairs(seasons) do
        local seasonData = require(string.format("Module:Seasonal/%s", season))
        if ship2 then
            addRow(result, seasonData, season, ship, format{templates.as_ship, ship = ship})
            addRow(result, seasonData, season, ship2, format{templates.as_ship, ship = ship2})
        else
            addRow(result, seasonData, season, ship)
        end
    end
    table.insert(result, templates.footer)
    return table.concat(result, "\n")
end

return ShipSeasonalQuotes