refactor date_translator
This commit is contained in:
parent
67709ee7cf
commit
7a998551e0
@ -1,29 +1,10 @@
|
|||||||
-- 日期时间
|
-- 日期时间
|
||||||
-- 提高权重的原因:因为在方案中设置了大于 1 的 initial_quality,导致 rq sj xq dt ts 产出的候选项在所有词语的最后。
|
-- 提高权重的原因:因为在方案中设置了大于 1 的 initial_quality,导致 rq sj xq dt ts 产出的候选项在所有词语的最后。
|
||||||
local formats = {
|
local function yield_cand(seg, text)
|
||||||
date = {
|
local cand = Candidate('date', seg.start, seg._end, text, '')
|
||||||
'%Y-%m-%d',
|
cand.quality = 100
|
||||||
'%Y/%m/%d',
|
yield(cand)
|
||||||
'%Y.%m.%d',
|
end
|
||||||
'%Y%m%d',
|
|
||||||
},
|
|
||||||
time = {
|
|
||||||
'%H:%M',
|
|
||||||
'%H:%M:%S'
|
|
||||||
},
|
|
||||||
datetime = {
|
|
||||||
'%Y-%m-%dT%H:%M:%S+08:00',
|
|
||||||
'%Y%m%d%H%M%S'
|
|
||||||
},
|
|
||||||
week = {
|
|
||||||
'星期%s',
|
|
||||||
'礼拜%s',
|
|
||||||
'周%s'
|
|
||||||
},
|
|
||||||
timestamp = {
|
|
||||||
'%d'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
local function date_translator(input, seg, env)
|
local function date_translator(input, seg, env)
|
||||||
if not env.date then
|
if not env.date then
|
||||||
@ -36,47 +17,42 @@ local function date_translator(input, seg, env)
|
|||||||
env.timestamp = config:get_string(env.name_space .. '/timestamp') or 'ts'
|
env.timestamp = config:get_string(env.name_space .. '/timestamp') or 'ts'
|
||||||
end
|
end
|
||||||
|
|
||||||
local current_time = os.time()
|
|
||||||
|
|
||||||
local yield_cand = function(type, text)
|
|
||||||
local cand = Candidate(type, seg.start, seg._end, text, '')
|
|
||||||
cand.quality = 100
|
|
||||||
yield(cand)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- 日期
|
-- 日期
|
||||||
if (input == env.date) then
|
if (input == env.date) then
|
||||||
for _, fmt in ipairs(formats.date) do
|
local current_time = os.time()
|
||||||
yield_cand('date', os.date(fmt, current_time))
|
yield_cand(seg, os.date('%Y-%m-%d', current_time))
|
||||||
end
|
yield_cand(seg, os.date('%Y/%m/%d', current_time))
|
||||||
yield_cand('date', os.date('%Y 年 %m 月 %d 日', current_time):gsub(' 0', ' '))
|
yield_cand(seg, os.date('%Y.%m.%d', current_time))
|
||||||
end
|
yield_cand(seg, os.date('%Y%m%d', current_time))
|
||||||
|
yield_cand(seg, os.date('%Y 年 %m 月 %d 日', current_time):gsub(' 0', ' '))
|
||||||
|
|
||||||
-- 时间
|
-- 时间
|
||||||
if (input == env.time) then
|
elseif (input == env.time) then
|
||||||
for _, fmt in ipairs(formats.time) do
|
local current_time = os.time()
|
||||||
yield_cand('time', os.date(fmt, current_time))
|
yield_cand(seg, os.date('%H:%M', current_time))
|
||||||
end
|
yield_cand(seg, os.date('%H:%M:%S', current_time))
|
||||||
end
|
|
||||||
-- 星期
|
-- 星期
|
||||||
if (input == env.week) then
|
elseif (input == env.week) then
|
||||||
local week_tab = { '日', '一', '二', '三', '四', '五', '六' }
|
local current_time = os.time()
|
||||||
for _, fmt in ipairs(formats.week) do
|
local week_tab = {'日', '一', '二', '三', '四', '五', '六'}
|
||||||
local text = week_tab[tonumber(os.date('%w', current_time) + 1)]
|
local text = week_tab[tonumber(os.date('%w', current_time) + 1)]
|
||||||
yield_cand('week', string.format(fmt, text))
|
yield_cand(seg, '星期' .. text)
|
||||||
end
|
yield_cand(seg, '礼拜' .. text)
|
||||||
end
|
yield_cand(seg, '周' .. text)
|
||||||
|
|
||||||
-- ISO 8601/RFC 3339 的时间格式 (固定东八区)(示例 2022-01-07T20:42:51+08:00)
|
-- ISO 8601/RFC 3339 的时间格式 (固定东八区)(示例 2022-01-07T20:42:51+08:00)
|
||||||
if (input == env.datetime) then
|
elseif (input == env.datetime) then
|
||||||
for _, fmt in ipairs(formats.datetime) do
|
local current_time = os.time()
|
||||||
yield_cand('datetime', os.date(fmt, current_time))
|
yield_cand(seg, os.date('%Y-%m-%dT%H:%M:%S+08:00', current_time))
|
||||||
end
|
yield_cand(seg, os.date('%Y%m%d%H%M%S', current_time))
|
||||||
end
|
|
||||||
-- 时间戳(十位数,到秒,示例 1650861664)
|
-- 时间戳(十位数,到秒,示例 1650861664)
|
||||||
if (input == env.timestamp) then
|
elseif (input == env.timestamp) then
|
||||||
for _, fmt in ipairs(formats.timestamp) do
|
local current_time = os.time()
|
||||||
yield_cand('timestamp', string.format(fmt, current_time))
|
yield_cand(seg, string.format('%d', current_time))
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- -- 显示内存
|
-- -- 显示内存
|
||||||
-- local cand = Candidate("date", seg.start, seg._end, ("%.f"):format(collectgarbage('count')), "")
|
-- local cand = Candidate("date", seg.start, seg._end, ("%.f"):format(collectgarbage('count')), "")
|
||||||
-- cand.quality = 100
|
-- cand.quality = 100
|
||||||
@ -89,4 +65,5 @@ local function date_translator(input, seg, env)
|
|||||||
-- end
|
-- end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
return date_translator
|
return date_translator
|
||||||
|
Loading…
Reference in New Issue
Block a user