Module:CharTree/zh-hant: Difference between revisions

From Elwiki
No edit summary
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 = require('Module:CharList').main


-- Main process
-- 從 MediaWiki:NavSidebar/zh-hant/Character 載入角色列表
local function load_char_list(lang)
    local title = mw.title.new('MediaWiki:NavSidebar/zh-hant/Character')
    local content = title:getContent()
    if not content then
        error("無法讀取 MediaWiki:NavSidebar/zh-hant/Character 的內容")
    end
    local char_list_func = loadstring(content)
    if not char_list_func then
        error("MediaWiki:NavSidebar/zh-hant/Character 內容無效")
    end
    local char_list = char_list_func()
    return char_list
end
 
-- 主處理函數
function p.main(frame)
function p.main(frame)
     local args = getArgs(frame);
     local args = getArgs(frame)
     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 char_list = get_char_list(frame, args.lang)
     local char_list = load_char_list(args.lang) -- 替換為從頁面讀取數據
     local lang = '';
     local lang = ''
     if args.lang then lang = '/' .. args.lang end
     if args.lang then lang = '/' .. args.lang end
     local is_localized = lang and lang ~= ''
     local is_localized = lang and lang ~= ''
Line 30: Line 44:
     local char_tree = mw.html.create('div'):addClass('char-banner-tree')
     local char_tree = mw.html.create('div'):addClass('char-banner-tree')
     local out = ''
     local out = ''
     local char, file_name, link, nopath, nopathnojob, entry, image_arg, icon_str;
     local char, file_name, link, nopath, nopathnojob, entry, image_arg, icon_str
     for char_iter=1, #char_order, 1 do
     for char_iter=1, #char_order, 1 do
         local base, jobs = char_order[char_iter], {{}, {}, {}}
         local base, jobs = char_order[char_iter], {{}, {}, {}}
Line 48: Line 62:
                 end
                 end
             end
             end
           
         end
         end
          
          
Line 54: Line 67:
             for path_iter, path_name in ipairs(job_name) do
             for path_iter, path_name in ipairs(job_name) do
                 -- Foreign languages
                 -- Foreign languages
                 local icon_link_char_name = path_name;
                 local icon_link_char_name = path_name
                 local normal_link_char_name = path_name;
                 local normal_link_char_name = path_name
                 if str_localized(path_name) then
                 if str_localized(path_name) then
                     local name_split = split_lang(path_name)
                     local name_split = split_lang(path_name)
Line 99: Line 112:
     local select_banner = mw.html.create('div'):addClass('character-banner-select tone-8 border-color')
     local select_banner = mw.html.create('div'):addClass('character-banner-select tone-8 border-color')
     for k, v in ipairs(char_order) do
     for k, v in ipairs(char_order) do
         local display_name = v;
         local display_name = v
         local actual_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 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
         if actual_name == 'Lu/Ciel' then actual_name = 'LuCiel (Lu)' end
Line 110: Line 123:
      
      
     return styles .. tostring(char_outer)
     return styles .. tostring(char_outer)
end
end


return p
return p