模块:Dictionary/Main.lua:修订间差异

来自「荏苒之境」
无编辑摘要
// via Wikitext Extension for VSCode
 
(未显示同一用户的21个中间版本)
第1行: 第1行:
local dict_views = require("Module:Dictionary-Views.lua")
local dict_views = require("Module:Dictionary/Views.lua")
local DICT_TABLE = dict_views.TABLE
local dict_utils = require("Module:Dictionary/Utils.lua")


local cargo = mw.ext.cargo
local cargo = mw.ext.cargo


local complete = {}
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 = {}


complete.show = function(frame)
main.show = function(frame)
     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, {
Language = language
})


    local rows = cargo.query(DICT_TABLE, "Spelling,Definition,Extra", {
local header = cargo.query(DICT_TABLE, "Spelling,Definition,Extra", {
         where = string.format([[Language="%s"]], language),
         where = "Language=\""..language.."\" AND Priority="..DICT_HEADER_PRIORITY,
         limit = 100000
        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 = {}


     local word_start = rows[1].Spelling == "__META__" and 2 or 1
     for i = 1, #query do
    local template_head = "{{词典条目|语言标识码="..language.."|拼写="
    local raw = query[i]
        local row = dict_utils.expand_row(raw, extra_count)


    for i = word_start, #rows do
         row[1] = "[["..raw._pageName.."|"..row[1].."]]"
         local row = rows[i]
         rows[#rows+1] = row
        local entry_page = dictPage.."/"..row.Spelling
        row.Spelling = "[["..entry_page.."|"..row.Spelling.."]]"
         mw.site.createPage(entry_page, template_head..row.Spelling.."}}")
     end
     end


     return dict_views.vocabulary(rows)
     return dict_views.vocabulary(header, rows)
end
end


return complete
return main

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