模块:Dictionary/Vocabulary.lua:修订间差异
来自「荏苒之境」
无编辑摘要 |
无编辑摘要 |
||
第1行: | 第1行: | ||
local csv = require("Module:Csv.lua") | local csv = require("Module:Csv.lua") | ||
local html = mw.html | |||
local cargo = mw.ext.cargo | local cargo = mw.ext.cargo | ||
local dict_views = require("Module:Dictionary-Views.lua") | local dict_views = require("Module:Dictionary-Views.lua") | ||
local | local DICT_TABLE = dict_views.TABLE | ||
local HEADERS = dict_views.HEADERS | local HEADERS = dict_views.HEADERS | ||
第22行: | 第23行: | ||
return | return | ||
end | end | ||
local conflicting_rows = {} | |||
local all_fields = table.concat(HEADERS, ",") | |||
for i = 1, #rows do | for i = 1, #rows do | ||
local entry = { Language = language} | local entry = { Language = language } | ||
local row = rows[i] | local row = rows[i] | ||
local query_res = cargo.query(DICT_TABLE, all_fields, { | |||
where = string.format([[Language="%s" AND Spelling="%s"]], language, row[1]) | |||
}) | |||
if #query_res ~= 0 then | |||
local r = query_res[1] | |||
for j = 1, #row do | |||
if r[i] ~= row[j] then | |||
table.insert(conflicting_rows, r) | |||
break | |||
end | |||
end | |||
end | |||
for j = 1, #row do | for j = 1, #row do | ||
entry[HEADERS[j]] = row[j] | entry[HEADERS[j]] = row[j] | ||
end | end | ||
cargo.store( | cargo.store(DICT_TABLE, entry) | ||
end | end | ||
local view = html.create("div") | |||
if frame.args.show_view == "true" then | if frame.args.show_view == "true" then | ||
view:node(dict_views.vocabulary(rows)) | |||
end | end | ||
if #conflicting_rows ~= 0 then | |||
view:tag("p", "检测到以下词汇已经存在,且与当前词汇表中的内容不一致,请统一词汇信息:") | |||
:style("color", "red") | |||
:node(dict_views.vocabulary(conflicting_rows)) | |||
end | |||
return view | |||
end | end | ||
return section | return section |
2025年8月2日 (六) 04:37的版本
此模块的文档可以在模块:Dictionary/Vocabulary.lua/doc创建
local csv = require("Module:Csv.lua")
local html = mw.html
local cargo = mw.ext.cargo
local dict_views = require("Module:Dictionary-Views.lua")
local DICT_TABLE = dict_views.TABLE
local HEADERS = dict_views.HEADERS
local section = {}
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
local conflicting_rows = {}
local all_fields = table.concat(HEADERS, ",")
for i = 1, #rows do
local entry = { Language = language }
local row = rows[i]
local query_res = cargo.query(DICT_TABLE, all_fields, {
where = string.format([[Language="%s" AND Spelling="%s"]], language, row[1])
})
if #query_res ~= 0 then
local r = query_res[1]
for j = 1, #row do
if r[i] ~= row[j] then
table.insert(conflicting_rows, r)
break
end
end
end
for j = 1, #row do
entry[HEADERS[j]] = row[j]
end
cargo.store(DICT_TABLE, entry)
end
local view = html.create("div")
if frame.args.show_view == "true" then
view:node(dict_views.vocabulary(rows))
end
if #conflicting_rows ~= 0 then
view:tag("p", "检测到以下词汇已经存在,且与当前词汇表中的内容不一致,请统一词汇信息:")
:style("color", "red")
:node(dict_views.vocabulary(conflicting_rows))
end
return view
end
return section