Module:Trailblazer Region
Jump to navigation
Jump to search
Module documentation
This documentation is transcluded from Template:No documentation/doc. [edit] [history] [purge]
This module does not have any documentation. Please consider adding documentation at Module:Trailblazer Region/doc. [edit]
Module:Trailblazer Region is invoked by
.Module:Trailblazer Region is required by Module:Sandbox.
Module:Trailblazer Region is required by Module:Sandbox/User:Towelcat/TrailblazerQuestLine.
local p = {}
local lang = mw.getContentLanguage()
local regions = {
misthalin = true,
karamja = true,
asgarnia = true,
desert = true,
fremennik = true,
kandarin = true,
morytania = true,
tirannwn = true,
wilderness = true,
kourend = true,
varlamore = true,
}
function p._main(region, note, link, global_highlight, league)
if region == nil or string.lower(region) == "no" then
return "None"
end
local ret = {}
for value in string.gmatch(region, "[^,]+") do
-- Ampersand regions will always just show badges without text
if string.find(value, "&") then
local badge_result = p._badge(value, note, link, global_highlight, league)
table.insert(ret, badge_result)
else
local lower = string.lower(value)
local trimmed = lower:gsub("^%s*(.-)%s*$", "%1")
if regions[trimmed] then
local uc_region = lang:ucfirst(trimmed)
local icon = p._icon(trimmed, note, link, league)
local text
if link == nil or link ~= 'false' then
text = string.format('<span class="tbz-name">[[%s/Areas/%s|%s]]</span>', league, uc_region, uc_region)
else
text = uc_region
end
local cur_ret = highlight(string.format('%s %s', icon, text), uc_region, global_highlight)
table.insert(ret, cur_ret)
else
table.insert(ret, value)
end
end
end
return table.concat(ret, '')
end
function highlight(s, r, global_highlight)
r = string.lower(r)
local highlight_class = ""
if global_highlight ~= nil and global_highlight == 'false' then
highlight_class = "tbz-no-global"
end
return string.format('<span class="tbz-region %s" data-tbz-area="%s">%s<span class="tbz-check">✓</span></span>', highlight_class, r, s)
end
function p._icon(region, note, link, league)
if string.lower(region or '') == "no" then
return ""
else
region = lang:ucfirst(region)
end
if note == nil then
note = region
end
local label
if link == nil or link ~= 'false' then
label = string.format('%s/Areas/%s', league, region)
else
label = ''
end
return string.format('[[File:%s Area Badge.png|%s|link=%s]]', region, note, label)
end
function p._badge(region, note, link, global_highlight, league)
if region == nil or string.lower(region) == "no" then
return ""
end
local highlight_class = ""
if global_highlight ~= nil and global_highlight == 'false' then
highlight_class = "tbz-no-global"
end
local ret = {}
for value in string.gmatch(region, "[^,]+") do
local lower = string.lower(value)
-- Ampersand regions wrapped in additional badge span
if string.find(lower, '&') then
local ampersandRegions = {}
local ampersandBadges = {}
for curRegion in string.gmatch(lower, "[^&]+") do
curRegion = curRegion:gsub("^%s*(.-)%s*$", "%1")
if regions[curRegion] then
table.insert(ampersandRegions, curRegion)
local icon = p._icon(curRegion, note, link, league)
local cur_badge = string.format('<span class="tbz-badge %s" data-tbz-area="%s">%s</span>', highlight_class, curRegion, icon)
table.insert(ampersandBadges, cur_badge)
end
end
local ampersandString = table.concat(ampersandRegions, '&')
local innerBadgesString = table.concat(ampersandBadges, '&')
local cur_ret = string.format('<span class="tbz-badge tbz-badge-wrapper %s" data-tbz-area="%s">%s</span>', highlight_class, ampersandString, innerBadgesString)
table.insert(ret, cur_ret)
else
local trimmed = lower:gsub("^%s*(.-)%s*$", "%1")
if regions[trimmed] then
local icon = p._icon(trimmed, note, link, league)
local cur_ret = string.format('<span class="tbz-badge %s" data-tbz-area="%s">%s</span>', highlight_class, trimmed, icon)
table.insert(ret, cur_ret)
else
table.insert(ret, value)
end
end
end
return table.concat(ret, '')
end
function p._highlightedIcon(region, note, link, global_highlight, league)
return highlight(p._icon(region, note, link, league), region, global_highlight)
end
function p.main(frame)
local args = frame:getParent().args
local region = args[1]
local note = args.note
local link = args.link
local global_highlight = args.global_highlight
local frameargs = frame.args
local league = frameargs.league
return p._main(region, note, link, global_highlight, league)
end
function p.highlightedIcon(frame)
local args = frame:getParent().args
local region = args[1]
local note = args.note
local link = args.link
local global_highlight = args.global_highlight
local frameargs = frame.args
local league = frameargs.league
return p._highlightedIcon(region, note, link, global_highlight, league)
end
function p.icon(frame)
local args = frame:getParent().args
local region = args[1]
local note = args.note
local link = args.link
local frameargs = frame.args
local league = frameargs.league
return p._icon(region, note, link, league)
end
function p.badge(frame)
local args = frame:getParent().args
local region = args[1]
local note = args.note
local link = args.link
local global_highlight = args.global_highlight
local frameargs = frame.args
local league = frameargs.league
return p._badge(region, note, link, global_highlight, league)
end
-- Parsing function for use in infoboxes. Shows at most 2 full chips; more
-- regions will render as badge icons without text.
function p.regionsForInfobox(arg)
if arg == nil or arg == '' or arg == 'UH OH YOU SHOULDN\'T SEE THIS!' or string.find(arg, "action=edit") then
return nil
end
if string.lower(arg) == 'no' then
return 'N/A'
end
local ret = {}
local comma_count = select(2, string.gsub(arg, ",", ""))
for region in string.gmatch(arg, "[^,]+") do
local trimmed = region:gsub("^%s*(.-)%s*$", "%1")
if comma_count < 2 then
table.insert(ret, p._main(trimmed, nil, nil, nil, 'Raging Echoes League'))
else
table.insert(ret, p._badge(trimmed, nil, nil, nil, 'Raging Echoes League'))
end
end
return table.concat(ret, '')
end
return p