diff --git a/double_pinyin.schema.yaml b/double_pinyin.schema.yaml index 510cc27..22b4da4 100644 --- a/double_pinyin.schema.yaml +++ b/double_pinyin.schema.yaml @@ -107,7 +107,7 @@ date_translator: # Lua 配置:农历 # 农历触发关键字 -# template 字段:{干支年} {农历月} {农历日} {星期} {生肖} {俗称农历月} {简记农历日} +# template 字段:{干支年} {农历月} {农历日} {生肖} {俗称农历月} {简记农历日} lunar: lunar lunar_template: "{干支年}{生肖}年{俗称农历月}{农历日}" diff --git a/double_pinyin_abc.schema.yaml b/double_pinyin_abc.schema.yaml index fe17cee..a228134 100644 --- a/double_pinyin_abc.schema.yaml +++ b/double_pinyin_abc.schema.yaml @@ -107,7 +107,7 @@ date_translator: # Lua 配置:农历 # 农历触发关键字 -# template 字段:{干支年} {农历月} {农历日} {星期} {生肖} {俗称农历月} {简记农历日} +# template 字段:{干支年} {农历月} {农历日} {生肖} {俗称农历月} {简记农历日} lunar: lunar lunar_template: "{干支年}{生肖}年{俗称农历月}{农历日}" diff --git a/double_pinyin_flypy.schema.yaml b/double_pinyin_flypy.schema.yaml index 9911349..5649c85 100644 --- a/double_pinyin_flypy.schema.yaml +++ b/double_pinyin_flypy.schema.yaml @@ -107,7 +107,7 @@ date_translator: # Lua 配置:农历 # 农历触发关键字 -# template 字段:{干支年} {农历月} {农历日} {星期} {生肖} {俗称农历月} {简记农历日} +# template 字段:{干支年} {农历月} {农历日} {生肖} {俗称农历月} {简记农历日} lunar: lunar lunar_template: "{干支年}{生肖}年{俗称农历月}{农历日}" diff --git a/double_pinyin_jiajia.schema.yaml b/double_pinyin_jiajia.schema.yaml index 9bb23cd..ada7645 100644 --- a/double_pinyin_jiajia.schema.yaml +++ b/double_pinyin_jiajia.schema.yaml @@ -107,7 +107,7 @@ date_translator: # Lua 配置:农历 # 农历触发关键字 -# template 字段:{干支年} {农历月} {农历日} {星期} {生肖} {俗称农历月} {简记农历日} +# template 字段:{干支年} {农历月} {农历日} {生肖} {俗称农历月} {简记农历日} lunar: lunar lunar_template: "{干支年}{生肖}年{俗称农历月}{农历日}" diff --git a/double_pinyin_mspy.schema.yaml b/double_pinyin_mspy.schema.yaml index 083bd31..49cc3e0 100644 --- a/double_pinyin_mspy.schema.yaml +++ b/double_pinyin_mspy.schema.yaml @@ -107,7 +107,7 @@ date_translator: # Lua 配置:农历 # 农历触发关键字 -# template 字段:{干支年} {农历月} {农历日} {星期} {生肖} {俗称农历月} {简记农历日} +# template 字段:{干支年} {农历月} {农历日} {生肖} {俗称农历月} {简记农历日} lunar: lunar lunar_template: "{干支年}{生肖}年{俗称农历月}{农历日}" diff --git a/double_pinyin_sogou.schema.yaml b/double_pinyin_sogou.schema.yaml index e8a34e7..281ac30 100644 --- a/double_pinyin_sogou.schema.yaml +++ b/double_pinyin_sogou.schema.yaml @@ -107,7 +107,7 @@ date_translator: # Lua 配置:农历 # 农历触发关键字 -# template 字段:{干支年} {农历月} {农历日} {星期} {生肖} {俗称农历月} {简记农历日} +# template 字段:{干支年} {农历月} {农历日} {生肖} {俗称农历月} {简记农历日} lunar: lunar lunar_template: "{干支年}{生肖}年{俗称农历月}{农历日}" diff --git a/double_pinyin_ziguang.schema.yaml b/double_pinyin_ziguang.schema.yaml index 5c886a1..3e48ba0 100644 --- a/double_pinyin_ziguang.schema.yaml +++ b/double_pinyin_ziguang.schema.yaml @@ -107,7 +107,7 @@ date_translator: # Lua 配置:农历 # 农历触发关键字 -# template 字段:{干支年} {农历月} {农历日} {星期} {生肖} {俗称农历月} {简记农历日} +# template 字段:{干支年} {农历月} {农历日} {生肖} {俗称农历月} {简记农历日} lunar: lunar lunar_template: "{干支年}{生肖}年{俗称农历月}{农历日}" diff --git a/lua/lunar.db b/lua/lunar.db index 0aae54f..ff0a19b 100644 Binary files a/lua/lunar.db and b/lua/lunar.db differ diff --git a/lua/lunar.lua b/lua/lunar.lua index 92c712e..bcee364 100644 --- a/lua/lunar.lua +++ b/lua/lunar.lua @@ -1,8 +1,7 @@ -- 将今天或者指定的公历日期转换为农历和二十四节气,支持1900-2100之间的日期。输入格式为YYYYMMDD,例如20240101。 - -- 默认格式示例:丙午马年正月初一 --- 标准:GB/T 33661-2017 《农历的编算和颁行》附录 D;GB/T 15835-2011 《出版物上数字用法》4.2.1;参考:人民日报,新华社 --- 数据:https://www.hko.gov.hk/tc/index.html +-- 标准:GB/T 33661-2017 《农历的编算和颁行》;GB/T 15835-2011 《出版物上数字用法》4.2.1;参考:人民日报,新华社 +-- 数据:https://www.hko.gov.hk/tc/gts/time/conversion1_text.htm (注:修正源数据 2051 年星期偏移,修正农历年份偏移) -- ================================ -- 安装: -- lunar.lua --> lua/lunar.lua @@ -13,7 +12,7 @@ -- - lua_translator@*lunar -- recognizer/gregorian_to_lunar: "^N[0-9]{1,8}" # 输入N19700101输出对应的农历信息 -- lunar: lunar # 输入此字符输出今日农历信息 --- lunar_template: "{干支年}{生肖}年{俗称农历月}{农历日}" # 可用字段:{干支年} {农历月} {农历日} {星期} {生肖} {俗称农历月} {简记农历日} +-- lunar_template: "{干支年}{生肖}年{俗称农历月}{农历日}" # 可用字段:{干支年} {农历月} {农历日} {生肖} {俗称农历月} {简记农历日} -- ``` -- ================================= local lunar_translator = {} @@ -22,30 +21,32 @@ local function new_lunar_cand( lunar_info, env, seg ) local values = {} local i = 1 for part in string.gmatch( lunar_info, '[^-]+' ) do - values[LUNAR_KEYS[i]] = part; i = i + 1 + values[LUNAR_KEYS[i]] = part; + i = i + 1 end values['俗称农历月'] = values['农历月']:gsub( '十二月', '腊月' ) values['简记农历日'] = values['农历日']:gsub( '^二十([一二三四五六七八九])$', '廿%1' ) local args = {} - for _, field in ipairs( env.lunar_template_fields ) do - args[#args + 1] = values[field] or '' - end - local cand = Candidate( 'lunar', seg.start, seg._end, string.format( env.lunar_format, table.unpack( args ) ), '' ) + for _, field in ipairs( env.lunar_template_fields ) do args[#args + 1] = values[field] or '' end + local cand = Candidate( + 'lunar', seg.start, seg._end, string.format( env.lunar_format, table.unpack( args ) ), + values['星期'] + ) cand.quality = 99999 - if values['节气'] then cand.comment = values['节气'] end + if values['节气'] then cand.comment = values['星期'] .. ' ' .. values['节气'] end return cand end function lunar_translator.init( env ) local ns = env.name_space:gsub( '^*', '' ) - if ns == '' then ns = 'lunar' end local config = env.engine.schema.config env.db = ReverseDb( 'lua/lunar.db' ) env.lunar_call_prefix = config:get_string( ns ) or 'lunar' env.seg_tag = 'gregorian_to_lunar' - local lunar_template = config:get_string( ns .. '_template' ) or '{干支年}{生肖}年{俗称农历月}{农历日}' + local lunar_template = config:get_string( ns .. '_template' ) or + '{干支年}{生肖}年{俗称农历月}{农历日}' local template_fields = {} env.lunar_format = lunar_template:gsub( '{([^}]+)}', function( field ) @@ -58,7 +59,8 @@ end function lunar_translator.func( input, seg, env ) local date - if input == env.lunar_call_prefix then date = os.date( '%Y%m%d' ) + if input == env.lunar_call_prefix then + date = os.date( '%Y%m%d' ) elseif seg:has_tag( env.seg_tag ) then date = input:match( '%d+' ) if date and #date < 8 then diff --git a/others/CHANGELOG.md b/others/CHANGELOG.md index 839b629..698b394 100644 --- a/others/CHANGELOG.md +++ b/others/CHANGELOG.md @@ -2,6 +2,10 @@ 除日常更新词库外的一些主要更新 🆕、破坏性变更 ⚠️。 +## 2026-04-27 + +- ⚠️ feat(lua): 更改农历 lua 模块实现方式。添加节气、星期支持,添加个性化支持。对照国家标准 GB/T 33661-2017 修正数据和表达规范。**此提交引入了新的文件,`lua/lunar.db`,请确保在更新后正确安装和引用该文件。** + --- *2026.03.26 Release* diff --git a/rime_ice.schema.yaml b/rime_ice.schema.yaml index 7546128..c1e8f42 100644 --- a/rime_ice.schema.yaml +++ b/rime_ice.schema.yaml @@ -98,7 +98,7 @@ date_translator: # Lua 配置:农历 # 农历触发关键字 -# template 字段:{干支年} {农历月} {农历日} {星期} {生肖} {俗称农历月} {简记农历日} +# template 字段:{干支年} {农历月} {农历日} {生肖} {俗称农历月} {简记农历日} lunar: nl lunar_template: "{干支年}{生肖}年{俗称农历月}{农历日}"