-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrime.lua
111 lines (98 loc) · 3.77 KB
/
rime.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
--- 过滤器:单字在先
function single_char_first_filter(input)
local l = {}
for cand in input:iter() do
if (utf8.len(cand.text) == 1) then
yield(cand)
else
table.insert(l, cand)
end
end
for i, cand in ipairs(l) do
yield(cand)
end
end
--- 过滤器:只显示单字
function single_char_only(input)
for cand in input:iter() do
if (utf8.len(cand.text) == 1) then
yield(cand)
end
end
end
--- 计算器
--- @KyleBing 2022-01-17
function calculator(input, seg)
if string.find(input, 'coco') ~= nil then -- 匹配 coco 开头的字符串
local _, _, a, operation, b = string.find(input, "coco(%d+%.?%d*)([%+%-%*/])(%d+%.?%d*)")
local result = 0
if operation == '+' then
result = a + b
elseif operation == '-' then
result = a - b
elseif operation == '*' then
result = a * b
elseif operation == '/' then
result = a / b
end
yield(Candidate("coco", seg.start, seg._end, result, "计算器"))
end
end
function date_translator(input, seg)
-- 日期格式说明:
-- %a abbreviated weekday name (e.g., Wed)
-- %A full weekday name (e.g., Wednesday)
-- %b abbreviated month name (e.g., Sep)
-- %B full month name (e.g., September)
-- %c date and time (e.g., 09/16/98 23:48:10)
-- %d day of the month (16) [01-31]
-- %H hour, using a 24-hour clock (23) [00-23]
-- %I hour, using a 12-hour clock (11) [01-12]
-- %M minute (48) [00-59]
-- %m month (09) [01-12]
-- %p either "am" or "pm" (pm)
-- %S second (10) [00-61]
-- %w weekday (3) [0-6 = Sunday-Saturday]
-- %W week number in year (48) [01-52]
-- %x date (e.g., 09/16/98)
-- %X time (e.g., 23:48:10)
-- %Y full year (1998)
-- %y two-digit year (98) [00-99]
-- %% the character `%´
-- 输入完整日期
if (input == "datetime") then
yield(Candidate("date", seg.start, seg._end, os.date("%Y-%m-%d %H:%M:%S"), ""))
end
-- 输入日期
if (input == "date") then
--- Candidate(type, start, end, text, comment)
yield(Candidate("date", seg.start, seg._end, os.date("%Y-%m-%d"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y/%m/%d"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y.%m.%d"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%Y年%m月%d日"), ""))
yield(Candidate("date", seg.start, seg._end, os.date("%m-%d-%Y"), ""))
end
-- 输入时间
if (input == "time") then
--- Candidate(type, start, end, text, comment)
yield(Candidate("time", seg.start, seg._end, os.date("%H:%M"), ""))
yield(Candidate("time", seg.start, seg._end, os.date("%Y%m%d%H%M%S"), ""))
yield(Candidate("time", seg.start, seg._end, os.date("%H:%M:%S"), ""))
end
-- 输入星期
-- -- @JiandanDream
-- -- https://github.com/KyleBing/rime-wubi86-jidian/issues/54
if (input == "week") then
local weekTab = {'日', '一', '二', '三', '四', '五', '六'}
yield(Candidate("week", seg.start, seg._end, "周"..weekTab[tonumber(os.date("%w")+1)], ""))
yield(Candidate("week", seg.start, seg._end, "星期"..weekTab[tonumber(os.date("%w")+1)], ""))
yield(Candidate("week", seg.start, seg._end, os.date("%A"), ""))
yield(Candidate("week", seg.start, seg._end, os.date("%a"), "缩写"))
yield(Candidate("week", seg.start, seg._end, os.date("%W"), "周数"))
end
-- 输入月份英文
if (input == "month") then
yield(Candidate("month", seg.start, seg._end, os.date("%B"), ""))
yield(Candidate("month", seg.start, seg._end, os.date("%b"), "缩写"))
end
end