匿名
未登录
中文(中国大陆)
登录
「荏苒之境」
搜索
查看“︁模块:Dictionary/Vocabulary.lua”︁的源代码
来自「荏苒之境」
命名空间
模块
讨论
更多
更多
页面操作
阅读
查看源代码
历史
清除缓存
←
模块:Dictionary/Vocabulary.lua
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
local csv = require("Module:Csv.lua") local dict_utils = require("Module:Dictionary-Utils.lua") local dict_views = require("Module:Dictionary-Views.lua") local html = mw.html local cargo = mw.ext.cargo local DICT_TABLE = dict_views.TABLE local DICT_HEADER_PRIORITY = dict_utils.HEADER_PRIORITY local vocabulary = {} local function format_conflict(i, prev_row, row) prev_row[i] = (prev_row[i] or "").."<br/><i style=\"color: grey\">"..(row[i] or "").."</i>" end local function query_existing_rows(language, rows) local t = { "Language=\"", language, "\" AND Priority<>", tostring(DICT_HEADER_PRIORITY), " AND Spelling in (" } for i = 1, #rows do t[#t+1] = "'" t[#t+1] = rows[1] t[#t+1] = "'," end t[#t] = "')" local query = cargo.query(DICT_TABLE, "Spelling,Definition,Extra,Priority,_pageName", { where = table.concat(t) }) local found = {} for i = 1, #query do local raw = query[i] raw.Priority = tonumber(raw.Priority) found[raw[1]] = raw end return found end local function check_conflicting(prev_row, row, extra_count, on_conflict) local compare_count = extra_count and extra_count + 2 or math.max(#row, #prev_row) local conflict = false for i = 1, compare_count do local prev = prev_row[i] local curr = row[i] if prev ~= curr then if on_conflict then on_conflict(i, prev_row, row) end conflict = true end end return conflict end local function store_row(language, priority, row, extra_count) local extra = {} for i = 1, extra_count or #row-2 do extra[i] = row[i+2] end cargo.store(DICT_TABLE, { Language = language, Spelling = row[1], Definition = row[2], Extra = csv.format_row(extra), Priority = priority }) end vocabulary.show = function(frame) local args = frame.args local page_name = frame.args.page_name local language = args.language local format = args.format local priority = tonumber(args.priority) or 1 local content = args.content local header local rows if format == "csv" then rows = csv.parse(content, true) header = rows.header else mw.addWarning("无效的词典格式:"..tostring(format)) return end local extra_count = #header - 2 local prev_header_raw = cargo.query(DICT_TABLE, "Spelling,Definition,Extra,_pageName", { where = "Language=\""..language.."\" AND Priority="..tostring(DICT_HEADER_PRIORITY) })[1] if prev_header_raw ~= nil and page_name ~= prev_header_raw._pageName then local prev_header = dict_utils.expand_row(prev_header_raw, extra_count) local is_conflicting = check_conflicting(prev_header, header, extra_count, format_conflict) if is_conflicting then return html.create("pre") :css("color", "red") :tag("p"):wikitext("检测到该词汇表的标题行(灰色文本)与之前储存的标题行文本冲突,请修复:"):done() :node(dict_views.vocabulary(prev_header, {})) end else store_row(language, DICT_HEADER_PRIORITY, header, extra_count) end local existing_rows = query_existing_rows(language, rows) local conflicting_rows = {} for i = 1, #rows do local row = rows[i] local prev_row_raw = existing_rows[row[1]] local prev_row = prev_row_raw and dict_utils.expand_row(prev_row_raw, extra_count) local ignore_store = false if prev_row_raw ~= nil then local prev_p = prev_row_raw.Priority if page_name == prev_row_raw._pageName or prev_p < priority then ignore_store = check_conflicting(prev_row, row, extra_count) elseif prev_p > priority then ignore_store = true else ignore_store = check_conflicting(prev_row, row, extra_count, format_conflict) if ignore_store then table.insert(conflicting_rows, prev_row) end end end if not ignore_store then store_row(language, priority, row, extra_count) end end local view = html.create("div") if #conflicting_rows ~= 0 then view:tag("pre") :css("color", "red") :tag("p") :wikitext("检测到旧词汇与新词汇(灰色文本)内容冲突的情况,且二者具有相同优先级,请统一词汇信息:") :done() :node(dict_views.vocabulary(header, conflicting_rows)) end if frame.args.show_view == "true" then view:node(dict_views.vocabulary(header, rows)) end return view end return vocabulary
该页面使用的模板:
模块:Dictionary/Vocabulary.lua/doc
(
查看源代码
)
返回
模块:Dictionary/Vocabulary.lua
。
导航
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
wiki工具
wiki工具
Cargo数据
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志