• 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:Quotes"

From Kancolle Wiki
Jump to navigation Jump to search
m
m
Line 108: Line 108:
 
     end
 
     end
 
     table.insert(result, templates.footer)
 
     table.insert(result, templates.footer)
     return table.concat(result, "\n")
+
     return table.concat(result, "\n") .. "\n" .. (frame.pagename or "-") .. (args.pagename or "-")
end
 
 
 
function Quotes.t(frame)
 
    local args = getArgs{frame = frame:getParent()}
 
    return (frame.pagename or "-") .. (args.pagename or "-")
 
 
end
 
end
  
 
return Quotes
 
return Quotes

Revision as of 13:10, 30 April 2016

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

local format = require('Module:StringInterpolation').format
local getArgs = require('Module:GetArgs')

local templates = {
    header = [[{| class="wikitable typography-xl-optout" style="width:100%;"
! style="width:10%;" | Event
!Japanese
!English
! style="${note_style}" | Note]],
    footer = "|}",
    audio_file = "${ship}${suffix}-${line}.ogg",
    audio_button = [=[<span class="audio_button">[[Media:${audio_file}|Play]]</span>]=],
    line_link = "[${link} ${line}]",
    first_row_style = [[style=""]],
    spoiler = [[<span style="background-color:#3A3A3A">${text}</span>]],
    row = [=[|- ${style}
| nowrap="nowrap" |${audio_button} ${line}
| colspan="${ja_colspan}" | <span lang="ja" style="font-family: sans-serif;">${ja}</span>
${en_cell}| ${note}]=],
    note = [[|-
| colspan="5" | ⇧ ${note}]],
}

local lines = {
    { name = "Introduction" },
    { name = "Library" },
    { name = "Secretary 1" },
    { name = "Secretary 2" },
    { name = "Secretary 3" },
    { name = "Idle" },
    { name = "Secretary Married", spoiler = true },
    { name = "Wedding", spoiler = true },
    { name = "Looking At Scores" },
    { name = "Joining A Fleet" },
    { name = "Equipment 1" },
    { name = "Equipment 2" },
    { name = "Equipment 3", note = "shared with expedition selection, resource collection, instant repair and development" },
    { name = "Supply" },
    { name = "Modernization", extra = true, note = "shared with remodeling line (modernization/remodeling lines are only present in [[KanColle Kai]])" },
    { name = "Docking Minor" },
    { name = "Docking Major" },
    { name = "Docking Complete" },
    { name = "Construction" },
    { name = "Returning From Sortie" },
    { name = "Starting A Sortie" },
    { name = "Battle Start" },
    { name = "Attack", note = "shared with [[Combat#Artillery_Spotting|day]]/[[Combat#Night_Special_Attack_Modifier|night]] special attacks, [[Expedition#Support_expedition|support expedition team]] arrival" },
    { name = "Night Battle" },
    { name = "Night Attack", extra = true },
    { name = "MVP" },
    { name = "Minor Damage 1" },
    { name = "Minor Damage 2" },
    { name = "Major Damage" },
    { name = "Sunk", spoiler = true },
}

local audio_suffixes = {
    ["Kai"] = "Kai",
    ["Kai Ni"] = "Kai2",
}

function format_text(text, line)
    return text and line.spoiler and format{templates.spoiler, text = text} or text or ""
end

function insertRow(result, remodel, args, line)
    local remodel_string = remodel or ""
    local ja, en, note = args[line.name .. remodel_string], args[line.name .. remodel_string .. "/En"], args[line.name .. remodel_string .. "/Note"]
    local jaEn = args[line.name .. remodel_string .. "/Both"]
    local link = args[line.name .. remodel_string .. "/Link"]
    if not remodel and not line.extra or jaEn or ja or en or note then
        table.insert(result, format{
            templates.row,
            style = not remodel and templates.first_row_style or "",
            audio_button = args.no_audio and "" or format{
                templates.audio_button,
                audio_file = format{
                    templates.audio_file,
                    ship = args.ship,
                    suffix = audio_suffixes[remodel] or "",
                    line = line.name,
                },
            },
            line = link and format{templates.line_link, link = link, line = line.name} or line.name,
            ja = format_text(jaEn or ja, line),
            ja_colspan = jaEn and "2" or "1",
            en_cell = jaEn and "" or "|" .. format_text(en, line) .. "\n",
            note = format_text(note, line),
        })
        return 1
    end
    return 0
end

local Quotes = {}

function Quotes.ShipQuotes(frame, args)
    args = args or getArgs{frame = frame:getParent()}
    local result = {}
    table.insert(result, format{templates.header, note_style = args.note_style or ""})
    for _, line in pairs(lines) do
        local added = insertRow(result, nil, args, line)
        added = added + insertRow(result, "/Kai", args, line)
        added = added + insertRow(result, "/Kai Ni", args, line)
        if line.note and added > 0 then
            table.insert(result, format{templates.note, note = line.note})
        end
    end
    table.insert(result, templates.footer)
    return table.concat(result, "\n") .. "\n" .. (frame.pagename or "-") .. (args.pagename or "-")
end

return Quotes