模块:Phrases/Query:修订间差异
来自「荏苒之境」
无编辑摘要 |
无编辑摘要 |
||
第34行: | 第34行: | ||
end | end | ||
return r | return r | ||
end | |||
local function get_language(frame) | |||
local parent_frame = frame:getParent() | |||
local language = translation.getCurrentLanguageSubpage() | |||
return (language == nil or language == "") and "zh-cn" or language | |||
end | end | ||
第41行: | 第47行: | ||
local args = frame.args | local args = frame.args | ||
local table_name = args.table | local table_name = args.table | ||
local language = get_language() | |||
local result = get(table_name, language, args) | |||
local t = {"<ul>"} | |||
for i = 1, #result do | |||
local entry = result[i] | |||
local theme, phrases = entry[1], entry[2] | |||
for j = 1, #phrases do | |||
t[#t+1] = "<li>" | |||
t[#t+1] = phrases[j] | |||
t[#t+1] = "</li>" | |||
end | |||
end | end | ||
t[#t+1] = "</ul>" | |||
return table.concat(t) | |||
end | |||
query.show_ul_sections = function(frame) | |||
local args = frame.args | |||
local table_name = args.table | |||
local language = get_language() | |||
local result = get(table_name, language, args) | local result = get(table_name, language, args) | ||
local t = { | local t = {} | ||
for i = 1, #result do | for i = 1, #result do | ||
local entry = result[i] | local entry = result[i] | ||
local theme, phrases = entry[1], entry[2] | local theme, phrases = entry[1], entry[2] | ||
t[#t+1] = "<section>" | |||
t[#t+1] = "<p><b>" | |||
t[#t+1] = theme | |||
t[#t+1] = "</p></b><ul>" | |||
for j = 1, #phrases do | for j = 1, #phrases do | ||
t[#t+1] = "<li>" | t[#t+1] = "<li>" | ||
第59行: | 第86行: | ||
t[#t+1] = "</li>" | t[#t+1] = "</li>" | ||
end | end | ||
t[#t+1] = "</ul></section>" | |||
end | end | ||
return table.concat(t) | return table.concat(t) | ||
end | end | ||
return query | return query |
2025年8月23日 (六) 22:31的版本
此模块的文档可以在模块:Phrases/Query/doc创建
local translation = require("Module:Template translation")
local utils_str = require("Module:Utils/String")
local cargo = mw.ext.cargo
local escape_sql = utils_str.escape_sql
local query = {}
local function get(table_name, language, config)
local theme_order_by = config.theme_order_by and escape_sql(config.theme_order_by)
local phrase_order_by = config.phrase_order_by and escape_sql(config.phrase_order_by)
local theme_limit = config.theme_limit
local phrase_limit_per_theme = config.phrase_limit_per_theme
local themes = cargo.query("PhraseThemes", "Theme", {
where = "PhraseTable='"..table_name.."'",
orderBy = theme_order_by,
limit = theme_limit
})
local r = {}
for _, theme_entry in ipairs(themes) do
local theme = theme_entry.Theme
local phrase_query = cargo.query(table_name, "Phrase", {
where = "Theme='"..escape_sql(theme).."' AND Language='"..escape_sql(language).."'",
orderBy = phrase_order_by,
limit = phrase_limit_per_theme,
})
local phrases = {}
for _, entry in pairs(phrase_query) do
phrases[#phrases+1] = entry.Phrase
end
r[#r+1] = {theme, phrases}
end
return r
end
local function get_language(frame)
local parent_frame = frame:getParent()
local language = translation.getCurrentLanguageSubpage()
return (language == nil or language == "") and "zh-cn" or language
end
query.get = get
query.show_ul = function(frame)
local args = frame.args
local table_name = args.table
local language = get_language()
local result = get(table_name, language, args)
local t = {"<ul>"}
for i = 1, #result do
local entry = result[i]
local theme, phrases = entry[1], entry[2]
for j = 1, #phrases do
t[#t+1] = "<li>"
t[#t+1] = phrases[j]
t[#t+1] = "</li>"
end
end
t[#t+1] = "</ul>"
return table.concat(t)
end
query.show_ul_sections = function(frame)
local args = frame.args
local table_name = args.table
local language = get_language()
local result = get(table_name, language, args)
local t = {}
for i = 1, #result do
local entry = result[i]
local theme, phrases = entry[1], entry[2]
t[#t+1] = "<section>"
t[#t+1] = "<p><b>"
t[#t+1] = theme
t[#t+1] = "</p></b><ul>"
for j = 1, #phrases do
t[#t+1] = "<li>"
t[#t+1] = phrases[j]
t[#t+1] = "</li>"
end
t[#t+1] = "</ul></section>"
end
return table.concat(t)
end
return query