• 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
m
Line 30: Line 30:
 
     "White Day 2015",
 
     "White Day 2015",
 
     "Rainy Season 2017",
 
     "Rainy Season 2017",
 +
    "Fall 2017",
 
}
 
}
  

Revision as of 15:42, 17 September 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 = {
    "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 = {}

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

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