模块: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 TABLE = dict_views.TABLE
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(TABLE, entry)
         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
         return dict_views.vocabulary(rows)
         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