From 47a87664400f48a2707284761f1517e9276ceb0f Mon Sep 17 00:00:00 2001 From: Dvel Date: Mon, 15 Jan 2024 00:14:26 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20N=20=E5=BC=80=E5=A4=B4=E5=85=AC?= =?UTF-8?q?=E5=8E=86=E8=BD=AC=E5=86=9C=E5=8E=86=20#565?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- double_pinyin.schema.yaml | 9 +++++---- double_pinyin_abc.schema.yaml | 9 +++++---- double_pinyin_flypy.schema.yaml | 9 +++++---- double_pinyin_mspy.schema.yaml | 9 +++++---- double_pinyin_sogou.schema.yaml | 9 +++++---- double_pinyin_ziguang.schema.yaml | 9 +++++---- lua/lunar.lua | 22 +++++++++++++++++----- rime_ice.schema.yaml | 9 +++++---- 8 files changed, 52 insertions(+), 33 deletions(-) diff --git a/double_pinyin.schema.yaml b/double_pinyin.schema.yaml index ac7348f..e35d061 100644 --- a/double_pinyin.schema.yaml +++ b/double_pinyin.schema.yaml @@ -240,10 +240,11 @@ punctuator: recognizer: import_preset: default # 从 default.yaml 继承通用的 patterns: # 再增加方案专有的: - punct: "^V([0-9]|10|[A-Za-z]+)$" # 响应 symbols_caps_v.yaml 的 symbols - reverse_lookup: "^L[a-z]+$" # 响应两分拼字的反查 - unicode: "^U[a-f0-9]+" # 响应 lua_translator@unicode 脚本将自动获取第 2 个字符作为触发前缀 - number: "^R[0-9]+[.]?[0-9]*" # 响应 lua_translator@number_translator 脚本将自动获取第 2 个字符作为触发前缀 + punct: "^V([0-9]|10|[A-Za-z]+)$" # 响应 symbols_caps_v.yaml 的 symbols + reverse_lookup: "^L[a-z]+$" # 响应两分拼字的反查 + unicode: "^U[a-f0-9]+" # 响应 lua_translator@unicode 脚本将自动获取第 2 个字符作为触发前缀 + number: "^R[0-9]+[.]?[0-9]*" # 响应 lua_translator@number_translator 脚本将自动获取第 2 个字符作为触发前缀 + gregorian_to_lunar: "^N[0-9]{1,8}" # 响应 lua_translator@lunar 公历转农历,输入 N20240115 得到「二〇二四年腊月初五」,脚本将自动获取第 2 个字符作为触发前缀 # 从 default 继承快捷键 diff --git a/double_pinyin_abc.schema.yaml b/double_pinyin_abc.schema.yaml index 2205478..a685d25 100644 --- a/double_pinyin_abc.schema.yaml +++ b/double_pinyin_abc.schema.yaml @@ -242,10 +242,11 @@ punctuator: recognizer: import_preset: default # 从 default.yaml 继承通用的 patterns: # 再增加方案专有的: - punct: "^V([0-9]|10|[A-Za-z]+)$" # 响应 symbols_caps_v.yaml 的 symbols - reverse_lookup: "^L[a-z]+$" # 响应两分拼字的反查 - unicode: "^U[a-f0-9]+" # 响应 lua_translator@unicode 脚本将自动获取第 2 个字符作为触发前缀 - number: "^R[0-9]+[.]?[0-9]*" # 响应 lua_translator@number_translator 脚本将自动获取第 2 个字符作为触发前缀 + punct: "^V([0-9]|10|[A-Za-z]+)$" # 响应 symbols_caps_v.yaml 的 symbols + reverse_lookup: "^L[a-z]+$" # 响应两分拼字的反查 + unicode: "^U[a-f0-9]+" # 响应 lua_translator@unicode 脚本将自动获取第 2 个字符作为触发前缀 + number: "^R[0-9]+[.]?[0-9]*" # 响应 lua_translator@number_translator 脚本将自动获取第 2 个字符作为触发前缀 + gregorian_to_lunar: "^N[0-9]{1,8}" # 响应 lua_translator@lunar 公历转农历,输入 N20240115 得到「二〇二四年腊月初五」,脚本将自动获取第 2 个字符作为触发前缀 # 从 default 继承快捷键 diff --git a/double_pinyin_flypy.schema.yaml b/double_pinyin_flypy.schema.yaml index 48426ee..257fc96 100644 --- a/double_pinyin_flypy.schema.yaml +++ b/double_pinyin_flypy.schema.yaml @@ -240,10 +240,11 @@ punctuator: recognizer: import_preset: default # 从 default.yaml 继承通用的 patterns: # 再增加方案专有的: - punct: "^V([0-9]|10|[A-Za-z]+)$" # 响应 symbols_caps_v.yaml 的 symbols - reverse_lookup: "^L[a-z]+$" # 响应两分拼字的反查 - unicode: "^U[a-f0-9]+" # 响应 lua_translator@unicode 脚本将自动获取第 2 个字符作为触发前缀 - number: "^R[0-9]+[.]?[0-9]*" # 响应 lua_translator@number_translator 脚本将自动获取第 2 个字符作为触发前缀 + punct: "^V([0-9]|10|[A-Za-z]+)$" # 响应 symbols_caps_v.yaml 的 symbols + reverse_lookup: "^L[a-z]+$" # 响应两分拼字的反查 + unicode: "^U[a-f0-9]+" # 响应 lua_translator@unicode 脚本将自动获取第 2 个字符作为触发前缀 + number: "^R[0-9]+[.]?[0-9]*" # 响应 lua_translator@number_translator 脚本将自动获取第 2 个字符作为触发前缀 + gregorian_to_lunar: "^N[0-9]{1,8}" # 响应 lua_translator@lunar 公历转农历,输入 N20240115 得到「二〇二四年腊月初五」,脚本将自动获取第 2 个字符作为触发前缀 # 从 default 继承快捷键 diff --git a/double_pinyin_mspy.schema.yaml b/double_pinyin_mspy.schema.yaml index a0430c4..cb3c9c5 100644 --- a/double_pinyin_mspy.schema.yaml +++ b/double_pinyin_mspy.schema.yaml @@ -244,10 +244,11 @@ punctuator: recognizer: import_preset: default # 从 default.yaml 继承通用的 patterns: # 再增加方案专有的: - punct: "^V([0-9]|10|[A-Za-z]+)$" # 响应 symbols_caps_v.yaml 的 symbols - reverse_lookup: "^L[a-z]+$" # 响应两分拼字的反查 - unicode: "^U[a-f0-9]+" # 响应 lua_translator@unicode 脚本将自动获取第 2 个字符作为触发前缀 - number: "^R[0-9]+[.]?[0-9]*" # 响应 lua_translator@number_translator 脚本将自动获取第 2 个字符作为触发前缀 + punct: "^V([0-9]|10|[A-Za-z]+)$" # 响应 symbols_caps_v.yaml 的 symbols + reverse_lookup: "^L[a-z]+$" # 响应两分拼字的反查 + unicode: "^U[a-f0-9]+" # 响应 lua_translator@unicode 脚本将自动获取第 2 个字符作为触发前缀 + number: "^R[0-9]+[.]?[0-9]*" # 响应 lua_translator@number_translator 脚本将自动获取第 2 个字符作为触发前缀 + gregorian_to_lunar: "^N[0-9]{1,8}" # 响应 lua_translator@lunar 公历转农历,输入 N20240115 得到「二〇二四年腊月初五」,脚本将自动获取第 2 个字符作为触发前缀 # 从 default 继承快捷键 diff --git a/double_pinyin_sogou.schema.yaml b/double_pinyin_sogou.schema.yaml index 3166f92..3251f30 100644 --- a/double_pinyin_sogou.schema.yaml +++ b/double_pinyin_sogou.schema.yaml @@ -244,10 +244,11 @@ punctuator: recognizer: import_preset: default # 从 default.yaml 继承通用的 patterns: # 再增加方案专有的: - punct: "^V([0-9]|10|[A-Za-z]+)$" # 响应 symbols_caps_v.yaml 的 symbols - reverse_lookup: "^L[a-z]+$" # 响应两分拼字的反查 - unicode: "^U[a-f0-9]+" # 响应 lua_translator@unicode 脚本将自动获取第 2 个字符作为触发前缀 - number: "^R[0-9]+[.]?[0-9]*" # 响应 lua_translator@number_translator 脚本将自动获取第 2 个字符作为触发前缀 + punct: "^V([0-9]|10|[A-Za-z]+)$" # 响应 symbols_caps_v.yaml 的 symbols + reverse_lookup: "^L[a-z]+$" # 响应两分拼字的反查 + unicode: "^U[a-f0-9]+" # 响应 lua_translator@unicode 脚本将自动获取第 2 个字符作为触发前缀 + number: "^R[0-9]+[.]?[0-9]*" # 响应 lua_translator@number_translator 脚本将自动获取第 2 个字符作为触发前缀 + gregorian_to_lunar: "^N[0-9]{1,8}" # 响应 lua_translator@lunar 公历转农历,输入 N20240115 得到「二〇二四年腊月初五」,脚本将自动获取第 2 个字符作为触发前缀 # 从 default 继承快捷键 diff --git a/double_pinyin_ziguang.schema.yaml b/double_pinyin_ziguang.schema.yaml index b95b665..48ac712 100644 --- a/double_pinyin_ziguang.schema.yaml +++ b/double_pinyin_ziguang.schema.yaml @@ -242,10 +242,11 @@ punctuator: recognizer: import_preset: default # 从 default.yaml 继承通用的 patterns: # 再增加方案专有的: - punct: "^V([0-9]|10|[A-Za-z]+)$" # 响应 symbols_caps_v.yaml 的 symbols - reverse_lookup: "^L[a-z]+$" # 响应两分拼字的反查 - unicode: "^U[a-f0-9]+" # 响应 lua_translator@unicode 脚本将自动获取第 2 个字符作为触发前缀 - number: "^R[0-9]+[.]?[0-9]*" # 响应 lua_translator@number_translator 脚本将自动获取第 2 个字符作为触发前缀 + punct: "^V([0-9]|10|[A-Za-z]+)$" # 响应 symbols_caps_v.yaml 的 symbols + reverse_lookup: "^L[a-z]+$" # 响应两分拼字的反查 + unicode: "^U[a-f0-9]+" # 响应 lua_translator@unicode 脚本将自动获取第 2 个字符作为触发前缀 + number: "^R[0-9]+[.]?[0-9]*" # 响应 lua_translator@number_translator 脚本将自动获取第 2 个字符作为触发前缀 + gregorian_to_lunar: "^N[0-9]{1,8}" # 响应 lua_translator@lunar 公历转农历,输入 N20240115 得到「二〇二四年腊月初五」,脚本将自动获取第 2 个字符作为触发前缀 # 从 default 继承快捷键 diff --git a/lua/lunar.lua b/lua/lunar.lua index 32b8694..32d4348 100755 --- a/lua/lunar.lua +++ b/lua/lunar.lua @@ -549,7 +549,7 @@ local function Date2LunarDate(Gregorian) Month = tonumber(Gregorian.sub(Gregorian, 5, 6)) Day = tonumber(Gregorian.sub(Gregorian, 7, 8)) if Year > 2100 or Year < 1899 or Month > 12 or Month < 1 or Day < 1 or Day > 31 or string.len(Gregorian) < 8 then - return "无效日期" + return "无效日期", "无效日期" end -- 获取两百年内的农历数据 @@ -642,17 +642,29 @@ local function Date2LunarDate(Gregorian) end -- 农历 +-- 从 lunar: nl 获取农历触发关键字(双拼默认为 lunar) +-- 从 recognizer/patterns/gregorian_to_lunar 获取第 2 个字符作为公历转农历的触发前缀,默认为 N local function translator(input, seg, env) - local date1, date2 = Date2LunarDate(os.date("%Y%m%d")) env.lunar_key_word = env.lunar_key_word or (env.engine.schema.config:get_string(env.name_space:gsub('^*', '')) or 'nl') + env.gregorian_to_lunar = env.gregorian_to_lunar or + (env.engine.schema.config:get_string('recognizer/patterns/gregorian_to_lunar'):sub(2, 2) or 'N') if input == env.lunar_key_word then - local lunar_date = Candidate("", seg.start, seg._end, date1, "") - lunar_date.quality = 999 - yield(lunar_date) + local date1, date2 = Date2LunarDate(os.date("%Y%m%d")) local lunar_ymd = (Candidate("", seg.start, seg._end, date2, "")) lunar_ymd.quality = 999 yield(lunar_ymd) + local lunar_date = Candidate("", seg.start, seg._end, date1, "") + lunar_date.quality = 999 + yield(lunar_date) + elseif env.gregorian_to_lunar ~= '' and input:sub(1, 1) == env.gregorian_to_lunar then + local date1, date2 = Date2LunarDate(input:sub(2)) + local lunar_ymd = (Candidate("", seg.start, seg._end, date2, "")) + lunar_ymd.quality = 999 + yield(lunar_ymd) + local lunar_date = Candidate("", seg.start, seg._end, date1, "") + lunar_date.quality = 999 + yield(lunar_date) end end diff --git a/rime_ice.schema.yaml b/rime_ice.schema.yaml index 8883d3d..c0712e0 100644 --- a/rime_ice.schema.yaml +++ b/rime_ice.schema.yaml @@ -203,10 +203,11 @@ punctuator: recognizer: import_preset: default # 从 default.yaml 继承通用的 patterns: # 再增加方案专有的: - punct: "^v([0-9]|10|[A-Za-z]+)$" # 响应 symbols_v.yaml 的 symbols,用 'v' 替换 '/' - reverse_lookup: "^u[a-z]+$" # 响应两分拼字的反查 - unicode: "^U[a-f0-9]+" # 响应 lua_translator@unicode 脚本将自动获取第 2 个字符作为触发前缀 - number: "^R[0-9]+[.]?[0-9]*" # 响应 lua_translator@number_translator 脚本将自动获取第 2 个字符作为触发前缀 + punct: "^v([0-9]|10|[A-Za-z]+)$" # 响应 symbols_v.yaml 的 symbols,用 'v' 替换 '/' + reverse_lookup: "^u[a-z]+$" # 响应两分拼字的反查 + unicode: "^U[a-f0-9]+" # 响应 lua_translator@unicode 脚本将自动获取第 2 个字符作为触发前缀 + number: "^R[0-9]+[.]?[0-9]*" # 响应 lua_translator@number_translator 脚本将自动获取第 2 个字符作为触发前缀 + gregorian_to_lunar: "^N[0-9]{1,8}" # 响应 lua_translator@lunar 公历转农历,输入 N20240115 得到「二〇二四年腊月初五」,脚本将自动获取第 2 个字符作为触发前缀 # 从 default 继承快捷键