Module:SunShow:修订间差异
外观
无编辑摘要 |
无编辑摘要 |
||
第16行: | 第16行: | ||
"超越", "生命", "表达", "破碎", "时间", "朦胧", "自然" | "超越", "生命", "表达", "破碎", "时间", "朦胧", "自然" | ||
} | } | ||
-- 整序和自然序的对应表 | |||
local seq_map = { | |||
24, 41, 10, 30, 28, 43, 49, | |||
44, 23, 15, 3, 37, 34, 39, | |||
8, 4, 26, 17, 16, 31, 7, | |||
48, 2, 32, 25, 47, 11, 18, | |||
42, 36, 5, 38, 21, 46, 40, | |||
29, 35, 27, 9, 20, 22, 33, | |||
14, 13, 6, 19, 12, 45, 1 | |||
} | |||
--[[ | |||
整序转自然序 | |||
将指定的整序转换为自然序。 | |||
输入: | |||
num: 整序数字,范围应在 1 到 49 之间 | |||
输出: | |||
返回对应的自然序数字,如果输入无效则返回 0 | |||
]] | |||
function p.seq_to_nat(num) | |||
if num < 1 or num > 49 then | |||
return 0 | |||
end | |||
return seq_map[num] | |||
end | |||
--[[ | |||
自然序转整序 | |||
将指定的自然序转换为整序。 | |||
输入: | |||
val: 自然序数字,范围应在 1 到 49 之间 | |||
输出: | |||
返回对应的整序数字,如果输入无效则返回 0 | |||
]] | |||
function p.nat_to_seq(val) | |||
for i, v in ipairs(seq_map) do | |||
if v == val then | |||
return i | |||
end | |||
end | |||
return 0 | |||
end | |||
--[[ | --[[ | ||
第89行: | 第132行: | ||
function p.sun492(inp) | function p.sun492(inp) | ||
return gua[inp] | return gua[inp] | ||
end | |||
---- 模板定义 ---- | |||
--[[ | |||
模板调用:整序转自然序 | |||
用法:{{#invoke:SunShow|seqToNatT|输入值}} | |||
]] | |||
function p.seqToNatT(frame) | |||
local args = getArgs(frame) | |||
local num = tonumber(args[1]) or 0 -- 默认值为0 | |||
return p.seq_to_nat(num) | |||
end | |||
--[[ | |||
模板调用:自然序转整序 | |||
用法:{{#invoke:SunShow|natToSeqT|输入值}} | |||
]] | |||
function p.natToSeqT(frame) | |||
local args = getArgs(frame) | |||
local val = tonumber(args[1]) or 0 -- 默认值为01 | |||
return p.nat_to_seq(val) | |||
end | end | ||
--[[ | --[[ | ||
模板调用:双色太阳易色块生成器(补码模式) | 模板调用:双色太阳易色块生成器(补码模式) | ||
用法:{{#invoke: | 用法:{{#invoke:SunShow|sunColorT|输入值}} | ||
]] | ]] | ||
function p.sunColorT(frame) | function p.sunColorT(frame) | ||
第103行: | 第168行: | ||
--[[ | --[[ | ||
模板调用:双色太阳易色块生成器(原码模式) | 模板调用:双色太阳易色块生成器(原码模式) | ||
用法:{{#invoke: | 用法:{{#invoke:SunShow|sunColor2T|输入值}} | ||
]] | ]] | ||
function p.sunColor2T(frame) | function p.sunColor2T(frame) | ||
第113行: | 第178行: | ||
--[[ | --[[ | ||
模板调用:单色契色块生成器 | 模板调用:单色契色块生成器 | ||
用法:{{#invoke: | 用法:{{#invoke:SunShow|cheiColorT|输入值}} | ||
]] | ]] | ||
function p.cheiColorT(frame) | function p.cheiColorT(frame) | ||
第123行: | 第188行: | ||
--[[ | --[[ | ||
模板调用:获取卦名(补码模式) | 模板调用:获取卦名(补码模式) | ||
用法:{{#invoke: | 用法:{{#invoke:SunShow|sun49T|输入值}} | ||
]] | ]] | ||
function p.sun49T(frame) | function p.sun49T(frame) | ||
第133行: | 第198行: | ||
--[[ | --[[ | ||
模板调用:获取卦名(原码模式) | 模板调用:获取卦名(原码模式) | ||
用法:{{#invoke: | 用法:{{#invoke:SunShow|sun492T|输入值}} | ||
]] | ]] | ||
function p.sun492T(frame) | function p.sun492T(frame) | ||
local args = getArgs(frame) | local args = getArgs(frame) | ||
local inp = tonumber(args[1]) or | local inp = tonumber(args[1]) or 1 -- 默认值为1 | ||
return p.sun492(inp) | return p.sun492(inp) | ||
end | end | ||
return p | return p |
2025年3月19日 (三) 23:25的版本
此模块的文档可以在Module:SunShow/doc创建
local p = {}
local getArgs = require('Module:Arguments').getArgs
-- 七元素的色号,赤橙黄绿青蓝紫,第八个是闰契的品红色
local rainbow = {"#f4592d", "#eda667", "#faf03e", "#5fb319", "#8eede2", "#0568e3","#49207c","#aa10aa"}
-- 太阳易卦名
local gua = {
"火", "祭祀", "对手", "成败", "反叛", "救赎", "爆发",
"欲望", "木", "创造", "新生", "凋谢", "重生", "弥散",
"自我", "寻找", "存在", "经典", "革新", "梦幻", "倾听",
"忍耐", "腐朽", "绝笔", "地", "孤独", "小人", "永恒",
"恶魔", "盛开", "理解", "泥土", "风", "雾气", "神",
"对抗", "绽放", "思考", "同伴", "变幻", "水", "隐退",
"超越", "生命", "表达", "破碎", "时间", "朦胧", "自然"
}
-- 整序和自然序的对应表
local seq_map = {
24, 41, 10, 30, 28, 43, 49,
44, 23, 15, 3, 37, 34, 39,
8, 4, 26, 17, 16, 31, 7,
48, 2, 32, 25, 47, 11, 18,
42, 36, 5, 38, 21, 46, 40,
29, 35, 27, 9, 20, 22, 33,
14, 13, 6, 19, 12, 45, 1
}
--[[
整序转自然序
将指定的整序转换为自然序。
输入:
num: 整序数字,范围应在 1 到 49 之间
输出:
返回对应的自然序数字,如果输入无效则返回 0
]]
function p.seq_to_nat(num)
if num < 1 or num > 49 then
return 0
end
return seq_map[num]
end
--[[
自然序转整序
将指定的自然序转换为整序。
输入:
val: 自然序数字,范围应在 1 到 49 之间
输出:
返回对应的整序数字,如果输入无效则返回 0
]]
function p.nat_to_seq(val)
for i, v in ipairs(seq_map) do
if v == val then
return i
end
end
return 0
end
--[[
双色太阳易色块生成器(补码模式)
为方便起见,这里事实上是用补码,即数值 6 5 4 3 2 1 0 指代火木光土风水空。
输入:
inp: 0-48的整数
tzbiou: 是否启用特殊时期样式(可选,默认0)
输出:带双色背景的HTML块儿
]]
function p.sunColor(inp, tzbiou)
tzbiou = tzbiou or 0
local l = inp % 7 -- 下卦
local u = math.floor(inp/7) % 7 -- 上卦
if (l == 4 and u == 1 and tzbiou == 1) then
return ' ' -- 特殊时期返回空格
else
return string.format(
'<span style="background:-webkit-linear-gradient(90deg, %s 0%%, %s 50%%, %s 50%%, %s 100%%)"> </span>',
rainbow[7-l], rainbow[7-l], rainbow[7-u], rainbow[7-u]
)
end
end
--[[
双色太阳易色块生成器(原码模式)
输入:
inp: 1-49的整数
tzbiou: 是否启用特殊时期样式(可选,默认0)
输出:带双色背景的HTML块儿
]]
function p.sunColor2(inp, tzbiou)
tzbiou = tzbiou or 0
local l = (inp - 1) % 7 + 1
local u = math.floor((inp - 1) / 7) % 7 + 1
if (l == 3 and u == 6 and tzbiou==1) then
return ' ' -- 特殊时期返回空格
else
return string.format(
'<span style="background:-webkit-linear-gradient(90deg, %s 0%%, %s 50%%, %s 50%%, %s 100%%)"> </span>',
rainbow[l], rainbow[l], rainbow[u], rainbow[u]
)
end
end
--[[
单色契色块生成器
输入:1-8的整数(对应八契原码)
输出:带纯色背景的HTML块儿
]]
function p.cheiColor(inp)
return string.format('<span style="background:%s"> </span>', rainbow[inp])
end
--[[
获取卦名(补码模式)
输入:0-48的整数
输出:对应的49日卦名
]]
function p.sun49(inp)
return gua[49 - (inp % 49)]
end
--[[
获取卦名(原码模式)
输入:1-49的整数
输出:对应的49日卦名
]]
function p.sun492(inp)
return gua[inp]
end
---- 模板定义 ----
--[[
模板调用:整序转自然序
用法:{{#invoke:SunShow|seqToNatT|输入值}}
]]
function p.seqToNatT(frame)
local args = getArgs(frame)
local num = tonumber(args[1]) or 0 -- 默认值为0
return p.seq_to_nat(num)
end
--[[
模板调用:自然序转整序
用法:{{#invoke:SunShow|natToSeqT|输入值}}
]]
function p.natToSeqT(frame)
local args = getArgs(frame)
local val = tonumber(args[1]) or 0 -- 默认值为01
return p.nat_to_seq(val)
end
--[[
模板调用:双色太阳易色块生成器(补码模式)
用法:{{#invoke:SunShow|sunColorT|输入值}}
]]
function p.sunColorT(frame)
local args = getArgs(frame)
local inp = tonumber(args[1]) or 0 -- 默认值为0
return p.sunColor(inp)
end
--[[
模板调用:双色太阳易色块生成器(原码模式)
用法:{{#invoke:SunShow|sunColor2T|输入值}}
]]
function p.sunColor2T(frame)
local args = getArgs(frame)
local inp = tonumber(args[1]) or 1 -- 默认值为1
return p.sunColor2(inp)
end
--[[
模板调用:单色契色块生成器
用法:{{#invoke:SunShow|cheiColorT|输入值}}
]]
function p.cheiColorT(frame)
local args = getArgs(frame)
local inp = tonumber(args[1]) or 1 -- 默认值为1
return p.cheiColor(inp)
end
--[[
模板调用:获取卦名(补码模式)
用法:{{#invoke:SunShow|sun49T|输入值}}
]]
function p.sun49T(frame)
local args = getArgs(frame)
local inp = tonumber(args[1]) or 0 -- 默认值为0
return p.sun49(inp)
end
--[[
模板调用:获取卦名(原码模式)
用法:{{#invoke:SunShow|sun492T|输入值}}
]]
function p.sun492T(frame)
local args = getArgs(frame)
local inp = tonumber(args[1]) or 1 -- 默认值为1
return p.sun492(inp)
end
return p