diff --git a/double_pinyin.schema.yaml b/double_pinyin.schema.yaml index 5c242fe..d6d1294 100755 --- a/double_pinyin.schema.yaml +++ b/double_pinyin.schema.yaml @@ -80,6 +80,15 @@ engine: code_length_limit_processor: 100 +# 日期、时间、星期、ISO 8601、时间戳的触发关键字 +date_translator: + date: date # 日期: 2022-11-29 + time: time # 时间: 18:13 + week: week # 星期: 星期二 + datetime: datetime # ISO 8601: 2022-11-29T18:13:11+08:00 + timestamp: timestamp # 时间戳: 1669716794 + + # 从 default 继承快捷键 key_binder: import_preset: default diff --git a/double_pinyin_flypy.schema.yaml b/double_pinyin_flypy.schema.yaml index 20330e9..5fb489a 100755 --- a/double_pinyin_flypy.schema.yaml +++ b/double_pinyin_flypy.schema.yaml @@ -80,6 +80,15 @@ engine: code_length_limit_processor: 100 +# 日期、时间、星期、ISO 8601、时间戳的触发关键字 +date_translator: + date: date # 日期: 2022-11-29 + time: time # 时间: 18:13 + week: week # 星期: 星期二 + datetime: datetime # ISO 8601: 2022-11-29T18:13:11+08:00 + timestamp: timestamp # 时间戳: 1669716794 + + # 从 default 继承快捷键 key_binder: import_preset: default diff --git a/rime.lua b/rime.lua index 927f75a..e85f811 100755 --- a/rime.lua +++ b/rime.lua @@ -2,9 +2,15 @@ ------------------------------------------------------------- -- 日期时间 -- 提高权重的原因:因为在方案中设置了大于 1 的 initial_quality,导致 rq sj xq dt ts 产出的候选项在所有词语的最后。 -function date_translator(input, seg) +function date_translator(input, seg, env) + local config = env.engine.schema.config + local date = config:get_string(env.name_space .."/date") or "rq" + local time = config:get_string(env.name_space .."/time") or "sj" + local week = config:get_string(env.name_space .."/week") or "xq" + local datetime = config:get_string(env.name_space .."/datetime") or "dt" + local timestamp = config:get_string(env.name_space .."/timestamp") or "ts" -- 日期 - if (input == "rq") then + if (input == date) then local cand = Candidate("date", seg.start, seg._end, os.date("%Y-%m-%d"), "") cand.quality = 100 yield(cand) @@ -19,7 +25,7 @@ function date_translator(input, seg) yield(cand) end -- 时间 - if (input == "sj") then + if (input == time) then local cand = Candidate("time", seg.start, seg._end, os.date("%H:%M"), "") cand.quality = 100 yield(cand) @@ -28,17 +34,20 @@ function date_translator(input, seg) yield(cand) end -- 星期 - if (input == "xq") then + if (input == week) then local weakTab = {'日', '一', '二', '三', '四', '五', '六'} - local cand = Candidate("week", seg.start, seg._end, "周" .. weakTab[tonumber(os.date("%w") + 1)], "") + local cand = Candidate("week", seg.start, seg._end, "星期" .. weakTab[tonumber(os.date("%w") + 1)], "") cand.quality = 100 yield(cand) - local cand = Candidate("week", seg.start, seg._end, "星期" .. weakTab[tonumber(os.date("%w") + 1)], "") + local cand = Candidate("week", seg.start, seg._end, "礼拜" .. weakTab[tonumber(os.date("%w") + 1)], "") + cand.quality = 100 + yield(cand) + local cand = Candidate("week", seg.start, seg._end, "周" .. weakTab[tonumber(os.date("%w") + 1)], "") cand.quality = 100 yield(cand) end -- ISO 8601/RFC 3339 的时间格式 (固定东八区)(示例 2022-01-07T20:42:51+08:00) - if (input == "dt") then + if (input == datetime) then local cand = Candidate("datetime", seg.start, seg._end, os.date("%Y-%m-%dT%H:%M:%S+08:00"), "") cand.quality = 100 yield(cand) @@ -47,7 +56,7 @@ function date_translator(input, seg) yield(cand) end -- 时间戳(十位数,到秒,示例 1650861664) - if (input == "ts") then + if (input == timestamp) then local cand = Candidate("datetime", seg.start, seg._end, os.time(), "") cand.quality = 100 yield(cand) diff --git a/rime_ice.schema.yaml b/rime_ice.schema.yaml index b2984d7..a5ac2ab 100755 --- a/rime_ice.schema.yaml +++ b/rime_ice.schema.yaml @@ -74,6 +74,15 @@ engine: code_length_limit_processor: 100 +# 日期、时间、星期、ISO 8601、时间戳的触发关键字 +date_translator: + date: rq # 日期: 2022-11-29 + time: sj # 时间: 18:13 + week: xq # 星期: 星期二 + datetime: dt # ISO 8601: 2022-11-29T18:13:11+08:00 + timestamp: ts # 时间戳: 1669716794 + + # 长词优先,提升 count 个词语,插入到第 idx 个位置,默认 2、4。 # 示例:将 2 个词插入到第 4、5 个候选项,输入 jie 得到「1接 2解 3姐 4饥饿 5极恶」 long_word_filter: