模块:Dictionary/Main.lua:修订间差异
来自「荏苒之境」
无编辑摘要 |
// via Wikitext Extension for VSCode |
||
(未显示同一用户的5个中间版本) | |||
第13行: | 第13行: | ||
local language = frame.args.language | local language = frame.args.language | ||
local dictPage = frame.args.dictionaryPage | local dictPage = frame.args.dictionaryPage | ||
if language == nil or language == "" then | |||
return "" | |||
end | |||
cargo.store(DICT_META_TABLE, { | cargo.store(DICT_META_TABLE, { | ||
Language = language | Language = language | ||
}) | }) | ||
local header = cargo.query(DICT_TABLE, "Spelling,Definition,Extra", { | |||
where = "Language=\""..language.."\" AND Priority="..DICT_HEADER_PRIORITY, | |||
limit = 1 | |||
})[1] | |||
if header == nil then | |||
error("标题行未找到") | |||
end | |||
header = dict_utils.expand_row(header) | |||
local query = cargo.query(DICT_TABLE, "Spelling,Definition,Extra,Priority", { | local query = cargo.query(DICT_TABLE, "Spelling,Definition,Extra,Priority,_pageName", { | ||
where = "Language=\""..language.."\"", | where = "Language=\""..language.."\" AND Priority<>"..DICT_HEADER_PRIORITY, | ||
limit = 1000000 | limit = 1000000 | ||
}) | }) | ||
if #query == 0 then | if #query == 0 then | ||
return "无词条。" | return "无词条。" | ||
end | end | ||
local extra_count = #header - 2 | local extra_count = #header - 2 | ||
local rows = {} | local rows = {} | ||
for i = 1, #query do | for i = 1, #query do | ||
local raw = query[i] | local raw = query[i] | ||
local row = dict_utils.expand_row(raw, extra_count) | |||
row[1] = "[["..raw._pageName.."|"..row[1].."]]" | |||
rows[#rows+1] = row | |||
end | end | ||
2025年8月5日 (二) 23:08的最新版本
此模块的文档可以在模块:Dictionary/Main.lua/doc创建
local dict_views = require("Module:Dictionary/Views.lua")
local dict_utils = require("Module:Dictionary/Utils.lua")
local cargo = mw.ext.cargo
local DICT_TABLE = dict_views.TABLE
local DICT_META_TABLE = dict_views.META_TABLE
local DICT_HEADER_PRIORITY = tostring(dict_utils.HEADER_PRIORITY)
local main = {}
main.show = function(frame)
local language = frame.args.language
local dictPage = frame.args.dictionaryPage
if language == nil or language == "" then
return ""
end
cargo.store(DICT_META_TABLE, {
Language = language
})
local header = cargo.query(DICT_TABLE, "Spelling,Definition,Extra", {
where = "Language=\""..language.."\" AND Priority="..DICT_HEADER_PRIORITY,
limit = 1
})[1]
if header == nil then
error("标题行未找到")
end
header = dict_utils.expand_row(header)
local query = cargo.query(DICT_TABLE, "Spelling,Definition,Extra,Priority,_pageName", {
where = "Language=\""..language.."\" AND Priority<>"..DICT_HEADER_PRIORITY,
limit = 1000000
})
if #query == 0 then
return "无词条。"
end
local extra_count = #header - 2
local rows = {}
for i = 1, #query do
local raw = query[i]
local row = dict_utils.expand_row(raw, extra_count)
row[1] = "[["..raw._pageName.."|"..row[1].."]]"
rows[#rows+1] = row
end
return dict_views.vocabulary(header, rows)
end
return main