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

来自「荏苒之境」
无编辑摘要
无编辑摘要
第7行: 第7行:
local function render(language, header, rows)
local function render(language, header, rows)
     local view = html.create("div")
     local view = html.create("div")
         :attr("id", "dictionary_section")
         :attr("id", "dictionary_"..language)
        :attr("class", "dictionary_"..language)
         :node(html.create("div")
         :node(html.create("header")
        :attr("class", "dictionary-header")
             :node(html.create("h1"):wikitext("词典:"..language))
             :node(html.create("h1"):wikitext("词典:"..language))
             :node(html.create("p"):wikitext("这是一个词典部分的页面,包含的单词如下:")))
             :node(html.create("p"):wikitext("单词表:")))


     local words = html.create("table")
     local words = html.create("table")
     view:node(words)
     view:node(words)
     local words_tbody = html.create("tbody")
      
    words:node(words_tbody)
 
     local word_header = html.create("tr")
     local word_header = html.create("tr")
     words_tbody:node(word_header)
     words:node(word_header)
     for i = 1, #header do
     for i = 1, #header do
         word_header:node(html.create("th"):wikitext(header[i]))
         word_header:node(html.create("th"):wikitext(header[i]))
第27行: 第25行:
         local row = rows[i]
         local row = rows[i]
         local word_row = html.create("tr")
         local word_row = html.create("tr")
         words_tbody:node(word_row)
         words:node(word_row)
         for j = 1, #row do
         for j = 1, #row do
             word_row:node(html.create("td"):wikitext(row[j]))
             word_row:node(html.create("td"):wikitext(row[j]))

2025年8月2日 (六) 02:44的版本

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

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

local section = {}

local function render(language, header, rows)
    local view = html.create("div")
        :attr("id", "dictionary_"..language)
        :node(html.create("div")
        	:attr("class", "dictionary-header")
            :node(html.create("h1"):wikitext("词典:"..language))
            :node(html.create("p"):wikitext("单词表:")))

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

    for i = 1, #rows do
        local row = rows[i]
        local word_row = html.create("tr")
        words:node(word_row)
        for j = 1, #row do
            word_row:node(html.create("td"):wikitext(row[j]))
        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 table_name = "Dict_"..language
    local header
    local rows

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

    local decl = { _table = table_name }
    for i = 1, #header do
        decl[header[i]] = "String";
    end
    cargo.declare(decl)

    for i = 1, #rows do
        local entry = {}
        local row = rows[i]
        for j = 1, #row do
            entry[header[j]] = row[j]
        end
        cargo.store(table_name, entry)
    end

    return render(language, header, rows)
end

return section