模块:Dictionary/Vocabulary.lua:修订间差异
来自「荏苒之境」
无编辑摘要 |
无编辑摘要 |
||
第1行: | 第1行: | ||
local csv = require("Module:Csv.lua") | local csv = require("Module:Csv.lua") | ||
local cargo = mw.ext.cargo | local cargo = mw.ext.cargo | ||
local html = mw.html | |||
local section = {} | local section = {} | ||
local function render(language, header, rows) | |||
local view = html.create("div") | |||
:attr("id", "dictionary_section") | |||
:attr("class", "dictionary_"..language) | |||
:node(html.create("header") | |||
:node(html.create("h1"):wikitext("词典:"..language)) | |||
:node(html.create("p"):wikitext("这是一个词典部分的页面,包含的单词如下:"))) | |||
local words = html.create("table") | |||
view:node(words) | |||
local words_tbody = html.create("tbody") | |||
words:node(words_tbody) | |||
local word_header = html.create("tr") | |||
words_tbody: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_tbody: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) | section.show = function(frame) | ||
local args = frame.args | local args = frame.args | ||
local | local language = args.language | ||
local format = args.format | local format = args.format | ||
local content = args.content | local content = args.content | ||
local | local table_name = "Dict_"..language | ||
local | local header | ||
local rows | |||
if format == "csv" then | if format == "csv" then | ||
rows = csv.parse(content, true) | |||
header = rows.header | |||
else | else | ||
mw.addWarning("无效的词典格式:"..tostring(format)) | mw.addWarning("无效的词典格式:"..tostring(format)) | ||
return | |||
end | end | ||
local decls = {} | |||
for i = 1, #header do | |||
decls[header[i]] = "String"; | |||
end | |||
cargo.declare(table_name, decls) | cargo.declare(table_name, decls) | ||
for i = 1, # | |||
cargo.store(table_name, | 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 | end | ||
return render(language, header, rows) | |||
end | end | ||
return section | return section |
2025年8月2日 (六) 02:25的版本
此模块的文档可以在模块: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_section")
:attr("class", "dictionary_"..language)
:node(html.create("header")
:node(html.create("h1"):wikitext("词典:"..language))
:node(html.create("p"):wikitext("这是一个词典部分的页面,包含的单词如下:")))
local words = html.create("table")
view:node(words)
local words_tbody = html.create("tbody")
words:node(words_tbody)
local word_header = html.create("tr")
words_tbody: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_tbody: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 decls = {}
for i = 1, #header do
decls[header[i]] = "String";
end
cargo.declare(table_name, decls)
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