Module:CharTree/zh-hant: Difference between revisions
From Elwiki
No edit summary Tag: Manual revert |
No edit summary |
||
Line 2: | Line 2: | ||
local getArgs = require('Module:Arguments').getArgs | local getArgs = require('Module:Arguments').getArgs | ||
local p = {} | local p = {} | ||
local get_char_list = | |||
-- 讀取角色列表 | |||
local function get_char_list() | |||
local char_page = mw.title.new("MediaWiki:NavSidebar/zh-hant/Character") | |||
local char_content = char_page and char_page:getContent() or "" | |||
local char_list = {} | |||
for line in char_content:gmatch("[^\r\n]+") do | |||
local char_name = line:match("%[%[(.-)%]%]") | |||
if char_name then | |||
table.insert(char_list, char_name) | |||
end | |||
end | |||
return char_list | |||
end | |||
-- Main process | -- Main process | ||
Line 9: | Line 23: | ||
local char_outer = mw.html.create('div'):addClass('character-banner-outer'):attr('data-lang', args.lang) | local char_outer = mw.html.create('div'):addClass('character-banner-outer'):attr('data-lang', args.lang) | ||
local char_banner = mw.html.create('div'):addClass('character-banner-wrap border-color tone-2') | local char_banner = mw.html.create('div'):addClass('character-banner-wrap border-color tone-2') | ||
local | local char_order = get_char_list() | ||
local lang = '' | local lang = '' | ||
if args.lang then lang = '/' .. args.lang end | if args.lang then lang = '/' .. args.lang end | ||
function split_lang(str) | local function split_lang(str) | ||
return str | |||
return | |||
end | end | ||
function str_localized(str) | local function str_localized(str) | ||
return | return false | ||
end | end | ||
local base_arg = args[1] or 'Elsword' | local base_arg = args[1] or 'Elsword' | ||
local base_name = | local base_name = base_arg | ||
local select_banner = mw.html.create('div'):addClass('character-banner-select tone-8 border-color') | |||
for _, v in ipairs(char_order) do | |||
local display_name = v; | |||
local actual_name = v; | |||
if str_localized(v) then actual_name = split_lang(v)[1]; display_name = split_lang(v)[2] end | |||
if actual_name == 'Lu/Ciel' then actual_name = 'LuCiel (Lu)' end | |||
local base_icon = mw.html.create('div') | |||
:attr('data-base', actual_name) | |||
:attr('data-display-base', display_name or actual_name) | |||
:wikitext('[[File: Icon - ' .. actual_name .. '.png]]') | |||
select_banner:node(base_icon) | |||
end | end | ||
Line 93: | Line 58: | ||
'Elsword' .. lang, | 'Elsword' .. lang, | ||
'tone-8', | 'tone-8', | ||
force_title = | force_title = char_order[1] | ||
} | } | ||
} | } | ||
char_outer:wikitext(header):node(char_banner:node(select_banner)) | char_outer:wikitext(header):node(char_banner:node(select_banner)) | ||
return styles .. tostring(char_outer) | return styles .. tostring(char_outer) | ||
end | end | ||
return p | return p |
Revision as of 09:53, 25 March 2025
Documentation for this module may be created at Module:CharTree/zh-hant/doc
require('Module:CommonFunctions')
local getArgs = require('Module:Arguments').getArgs
local p = {}
-- 讀取角色列表
local function get_char_list()
local char_page = mw.title.new("MediaWiki:NavSidebar/zh-hant/Character")
local char_content = char_page and char_page:getContent() or ""
local char_list = {}
for line in char_content:gmatch("[^\r\n]+") do
local char_name = line:match("%[%[(.-)%]%]")
if char_name then
table.insert(char_list, char_name)
end
end
return char_list
end
-- Main process
function p.main(frame)
local args = getArgs(frame);
local char_outer = mw.html.create('div'):addClass('character-banner-outer'):attr('data-lang', args.lang)
local char_banner = mw.html.create('div'):addClass('character-banner-wrap border-color tone-2')
local char_order = get_char_list()
local lang = ''
if args.lang then lang = '/' .. args.lang end
local function split_lang(str)
return str
end
local function str_localized(str)
return false
end
local base_arg = args[1] or 'Elsword'
local base_name = base_arg
local select_banner = mw.html.create('div'):addClass('character-banner-select tone-8 border-color')
for _, v in ipairs(char_order) do
local display_name = v;
local actual_name = v;
if str_localized(v) then actual_name = split_lang(v)[1]; display_name = split_lang(v)[2] end
if actual_name == 'Lu/Ciel' then actual_name = 'LuCiel (Lu)' end
local base_icon = mw.html.create('div')
:attr('data-base', actual_name)
:attr('data-display-base', display_name or actual_name)
:wikitext('[[File: Icon - ' .. actual_name .. '.png]]')
select_banner:node(base_icon)
end
local styles = frame:preprocess('{{#css:MediaWiki:Character-Banner.css}}')
local header = frame:expandTemplate{
title = 'CharHeader',
args = {
'Elsword',
'Elsword' .. lang,
'tone-8',
force_title = char_order[1]
}
}
char_outer:wikitext(header):node(char_banner:node(select_banner))
return styles .. tostring(char_outer)
end
return p