模块:Dictionary/Vocabulary.lua:修订间差异

来自「荏苒之境」
无编辑摘要
无编辑摘要
第5行: 第5行:
local section = {}
local section = {}


local function render(language, header, rows)
local HEADERS = {"Spelling", "Category", "Definition", "Source", "Extra"}
local HEADER_TEXTS = {"拼写", "分类", "释义", "词源", "额外信息"}
 
local function render(language, rows)
     local view = html.create("div")
     local view = html.create("div")
         :attr("id", "dictionary_"..language)
         :attr("id", "dictionary_"..language)
第16行: 第19行:
      
      
     local word_header = words:tag("tr")
     local word_header = words:tag("tr")
     for i = 1, #header do
     for i = 1, #HEADER_TEXTS do
         word_header:node(html.create("th"):wikitext(header[i]))
         word_header:node(html.create("th"):wikitext(HEADER_TEXTS[i]))
     end
     end


第52行: 第55行:


     for i = 1, #rows do
     for i = 1, #rows do
         local entry = {}
         local entry = { Language = language}
         local row = rows[i]
         local row = rows[i]
         for j = 1, #row do
         for j = 1, #row do
             entry[header[j]] = row[j]
             entry[HEADERS[j]] = row[j]
         end
         end
         cargo.store("Dictionary", entry)
         cargo.store("Dictionary", entry)

2025年8月2日 (六) 03:18的版本

此模块的文档可以在模块:Dictionary/Vocabulary.lua/doc创建

local csv = require("Module:Csv.lua")
local cargo = mw.ext.cargo
local html = mw.html

local section = {}

local HEADERS = {"Spelling", "Category", "Definition", "Source", "Extra"}
local HEADER_TEXTS = {"拼写", "分类", "释义", "词源", "额外信息"}

local function render(language, rows)
    local view = html.create("div")
        :attr("id", "dictionary_"..language)
        :node(html.create("div")
            :attr("class", "dictionary-header")
            :node(html.create("h2"):wikitext("词典:"..language))
            :node(html.create("p"):wikitext("本页面包含的词汇如下:")))

    local words = view:tag("table")
    
    local word_header = words:tag("tr")
    for i = 1, #HEADER_TEXTS do
        word_header:node(html.create("th"):wikitext(HEADER_TEXTS[i]))
    end

    for i = 1, #rows do
        local row = rows[i]
        local word_row = words:tag("tr")
        for j = 1, #row do
            local td = word_row:tag("td")
            if j == 1 then
                td:node(html.create("b"):wikitext(row[j]))
            else
                td:wikitext(row[j])
            end
        end
    end

    return view
end

section.show = function(frame)
    local args = frame.args
    local language = args.language
    local format = args.format
    local content = args.content

    local rows

    if format == "csv" then
        rows = csv.parse(content)
    else
        mw.addWarning("无效的词典格式:"..tostring(format))
        return
    end

    for i = 1, #rows do
        local entry = { Language = language}
        local row = rows[i]
        for j = 1, #row do
            entry[HEADERS[j]] = row[j]
        end
        cargo.store("Dictionary", entry)
    end

    return render(language, header, rows)
end

return section