Module:OmegaMap: Difference between revisions
Jump to navigation
Jump to search
Refresh OmegaWiki seed content |
Refresh OmegaWiki seed content |
||
| Line 31: | Line 31: | ||
local location = line.locations[col] | local location = line.locations[col] | ||
if location then | if location then | ||
local | local marker = mw.html.create('span') | ||
:addClass('omega-color-' .. location.class) | :addClass('omega-color-' .. location.class) | ||
:attr('title', location.label .. ' (' .. location.zh .. ')') | :attr('title', location.label .. ' (' .. location.zh .. ')') | ||
:attr('aria-label', location.label .. ' (' .. location.zh .. ')') | :attr('aria-label', location.label .. ' (' .. location.zh .. ')') | ||
:wikitext(mw.text.nowiki(location.char)) | :wikitext(mw.text.nowiki(location.char)) | ||
rowNode:wikitext('[[' .. location.target .. '|' .. tostring(marker) .. ']]') | |||
locations[#locations+1] = { | locations[#locations+1] = { | ||
target = target, | target = location.target, | ||
label = location.label, | label = location.label, | ||
zh = location.zh, | zh = location.zh, | ||
| Line 56: | Line 55: | ||
for _, location in ipairs(locations) do | for _, location in ipairs(locations) do | ||
local item = list:tag('li') | local item = list:tag('li') | ||
item: | item:wikitext('[[' .. location.target .. '|' .. mw.text.nowiki(location.label) .. ']]') | ||
item:wikitext(' ') | item:wikitext(' ') | ||
item:tag('span') | item:tag('span') | ||
Latest revision as of 03:31, 24 July 2026
Documentation for this module may be created at Module:OmegaMap/doc
local p = {}
local maps = {
remake = {
{ text='###########', locations={ [3]={target='Locations/Harbor', label='Harbor', zh='港口', char='H', class='cyan'} } },
{ text='#.........#', locations={} },
{ text='#..@......#', locations={ [4]={target='Locations/Town', label='Town', zh='城镇', char='T', class='yellow'} } },
{ text='#.........#', locations={} },
{ text='###########', locations={} },
},
classic = {
{ text='#########', locations={ [3]={target='Classic:Locations/Harbor', label='Harbor', zh='港口', char='H', class='cyan'} } },
{ text='#.......#', locations={} },
{ text='#..@....#', locations={ [4]={target='Classic:Locations/Town', label='Town', zh='城镇', char='T', class='yellow'} } },
{ text='#########', locations={} },
},
}
function p.render(frame)
local edition = frame.args.edition or (mw.title.getCurrentTitle().namespace == 3002 and 'classic' or 'remake')
local map = maps[edition] or maps.remake
local root = mw.html.create('div'):addClass('omega-map-layout')
local mapNode = root:tag('div')
:addClass('omega-map')
:attr('role', 'group')
:attr('aria-label', edition .. ' map')
local locations = {}
for _, line in ipairs(map) do
local rowNode = mapNode:tag('div'):addClass('omega-map-row')
for col = 1, #line.text do
local char = line.text:sub(col, col)
local location = line.locations[col]
if location then
local marker = mw.html.create('span')
:addClass('omega-color-' .. location.class)
:attr('title', location.label .. ' (' .. location.zh .. ')')
:attr('aria-label', location.label .. ' (' .. location.zh .. ')')
:wikitext(mw.text.nowiki(location.char))
rowNode:wikitext('[[' .. location.target .. '|' .. tostring(marker) .. ']]')
locations[#locations+1] = {
target = location.target,
label = location.label,
zh = location.zh,
}
else
rowNode:wikitext(mw.text.nowiki(char))
end
end
end
local directory = root:tag('div')
:addClass('omega-map-directory')
:attr('role', 'navigation')
:attr('aria-label', 'Locations')
local list = directory:tag('ol')
for _, location in ipairs(locations) do
local item = list:tag('li')
item:wikitext('[[' .. location.target .. '|' .. mw.text.nowiki(location.label) .. ']]')
item:wikitext(' ')
item:tag('span')
:attr('lang', 'zh-Hans')
:wikitext(mw.text.nowiki(location.zh))
end
return tostring(root)
end
return p