其他分享
首页 > 其他分享> > RIME输入法获取当前时间(一)

RIME输入法获取当前时间(一)

作者:互联网

Rime输入法通过定义lua文件,可以实现获取当前时间日期的功能。

1.TIME

Rime是一款可以高度自定义的输入法,相关教程可以查看往期文章,关于时间获取是指输入一个指定关键字,输出当前时间,效果如下(我定义了time关键字):

实现如下:

①在用户文件夹中新建一个rime.lua文件加入如下代码

 time_translator = require("time")

②在用户文件夹下新建文件夹Lua,并新建文件time.lua(此处的文件名必需与上文require中的内容相同),加入如下lua代码:

 --lua语言中的注释用“--”
 local function translator(input, seg)
    if (input == "time") then         --关键字更改,你也可以用or语句定义多个关键字
       yield(Candidate("time", seg.start, seg._end, os.date("%H:%M"), " "))
       yield(Candidate("time", seg.start, seg._end, os.date("%H点%M分"), " "))
       yield(Candidate("time", seg.start, seg._end, os.date("%H:%M:%S"), " "))
       yield(Candidate("time", seg.start, seg._end, os.date("%H点%M分%S秒"), " "))
    end
 end
 return translator

此处代码用lua语言编写而成,若有一定语言基础,根据自己的需求调整响应代码。

③在用户配置文件中开启(*.custom.yaml文件)

 #若你的配置文件中有engine/translator,则后面直接加入代码
     - lua_translator@time_translator
 #若你的配置文件中无engine/translator项,则加入
   engine/+:
     translators/+:
       - lua_translator@time_translator
 #此处@后面的名称必需与rime.lua文件中的定义名称一致

2.DATE

与time类似,只需修改lua文件中的实现代码即可,我定义的关键字是date,效果如下:

实现如下:①在rime.lua文件加入如下代码

 date_translator = require("date")

②在文件夹Lua中新建文件date.lua(此处的文件名必需与上文require中的内容相同),加入如下lua代码:

 --lua语言中的注释用“--”
 local function translator(input, seg)
    if (input == "date") then
 ------------------------------------------------------------------------------------
 --普通日期1,类似2022年01月02日
 date1=os.date("%Y年%m月%d日")
 date_y=os.date("%Y") --取年
 date_m=os.date("%m") --取月
 date_d=os.date("%d") --取日
 --yield(Candidate("date", seg.start, seg._end, date1, " "))
 ------------------------------------------------------------------------------------
 --普通日期2,类似2022年1月1日
 num_m=os.date("%m")+0
 num_m1=math.modf(num_m)
 num_d=os.date("%d")+0
 num_d1=math.modf(num_d)
 date2=os.date("%Y年")..tostring(num_m1).."月"..tostring(num_d1).."日"
 yield(Candidate("date", seg.start, seg._end, date2, " "))
 ------------------------------------------------------------------------------------
 --普通日期3,类似1月1日
 num_m=os.date("%m")+0
 num_m1=math.modf(num_m)
 num_d=os.date("%d")+0
 num_d1=math.modf(num_d)
 date3=tostring(num_m1).."月"..tostring(num_d1).."日"
 yield(Candidate("date", seg.start, seg._end, date3, " "))
 yield(Candidate("date", seg.start, seg._end, os.date("%Y/%m/%d"), " "))
 yield(Candidate("date", seg.start, seg._end, os.date("%Y-%m-%d"), " "))
 ------------------------------------------------------------------------------------
 --大写日期,类似二〇二〇年十一月二十六日
 date_y=date_y:gsub("%d",{
 ["1"]="一",
 ["2"]="二",
 ["3"]="三",
 ["4"]="四",
 ["5"]="五",
 ["6"]="六",
 ["7"]="七",
 ["8"]="八",
 ["9"]="九",
 ["0"]="〇",
 })
 date_y=date_y.."年"
 date_m=date_m:gsub("%d",{
 ["1"]="一",
 ["2"]="二",
 ["3"]="三",
 ["4"]="四",
 ["5"]="五",
 ["6"]="六",
 ["7"]="七",
 ["8"]="八",
 ["9"]="九",
 ["0"]="",
 })
 date_m=date_m.."月"
 if num_m1==10 then date_m="十月" end
 if num_m1==11 then date_m="十一月" end
 if num_m1==12 then date_m="十二月" end
 date_d=date_d:gsub("%d",{
 ["1"]="一",
 ["2"]="二",
 ["3"]="三",
 ["4"]="四",
 ["5"]="五",
 ["6"]="六",
 ["7"]="七",
 ["8"]="八",
 ["9"]="九",
 ["0"]="",
 })
 date_d=date_d.."日"
 if num_d1>9 then
 if num_d1<19 then
 date_d="十"..string.sub(date_d,4,#date_d)
 end
 end
 if num_d1>19 then date_d=string.sub(date_d,1,3).."十"..string.sub(date_d,4,#date_d) end
 date4=date_y..date_m..date_d
 yield(Candidate("date", seg.start, seg._end, date4, " "))
 ------------------------------------------------------------------------------------
 --英文日期
     local date_d=os.date("%d")
     local date_m=os.date("%m")
     local date_y=os.date("%Y")
     local date_m1=""
     local date_m2=""
     if date_m=="01" then 
        date_m1="Jan."
        date_m2="January"
     end
     if date_m=="02" then 
        date_m1="Feb."
        date_m2="February"
     end
     if date_m=="03" then 
        date_m1="Mar."
        date_m2="March"
     end
     if date_m=="04" then 
        date_m1="Apr."
        date_m2="April"
     end
     if date_m=="05" then 
        date_m1="May."
        date_m2="May"
     end
     if date_m=="06" then 
        date_m1="Jun."
        date_m2="June"
     end
     if date_m=="07" then 
        date_m1="Jul."
        date_m2="July"
     end
     if date_m=="08" then 
        date_m1="Aug."
        date_m2="August"
     end
     if date_m=="09" then 
        date_m1="Sept."
        date_m2="September"
     end
     if date_m=="10" then 
        date_m1="Oct."
        date_m2="October"
     end
     if date_m=="11" then 
        date_m1="Nov."
        date_m2="November"
     end
     if date_m=="12" then 
        date_m1="Dec."
        date_m2="December"
     end
 ​
      if date_d=="0" then 
        symbal="st" 
      elseif date_d=="1" then
        symbal="nd" 
      elseif date_d=="2" then 
        symbal="rd" 
      else
        symbal="th"
      end
 date5=date_m1.." "..date_d..symbal..", "..date_y
 date6=date_m2.." "..date_d..symbal..", "..date_y
 ​
 yield(Candidate("date", seg.start, seg._end, date5, " "))
 yield(Candidate("date", seg.start, seg._end, date6, " "))
 yield(Candidate("date", seg.start, seg._end, os.date("%Y%m%d"), " "))
    end
 end
 ------------------------------------------------------------------------------------
 return translator

③在用户配置文件中开启(*.custom.yaml文件)

 #若你的配置文件中有engine/translator,则后面直接加入代码
     - lua_translator@date_translator
 #若你的配置文件中无engine/translator项,则加入
   engine/+:
     translators/+:
       - lua_translator@date_translator
 #此处@后面的名称必需与rime.lua文件中的定义名称一致

3.WEEK

与time类似,只需修改lua文件中的实现代码即可,我定义的关键字是week,效果如下:

实现如下:①在rime.lua文件加入如下代码

 week_translator = require("week")

②在

文件夹Lua中新建文件date.lua(此处的文件名必需与上文require中的内容相同),加入如下lua代码:

 --lua语言中的注释用“--”
 function translator(input, seg)
   if (input == "week") then
     local day_w=os.date("%w")
     local day_w1=""
     local day_w2=""
     local day_w3=""
     if day_w=="0" then 
       day_w1="星期日" 
       day_w2="Sunday" 
       day_w3="Sun." 
     end
     if day_w=="1" then
       day_w1="星期一" 
       day_w2="Monday" 
       day_w3="Mon." 
     end
     if day_w=="2" then
       day_w1="星期二" 
       day_w2="Tuesday" 
       day_w3="Tues." 
     end
     if day_w=="3" then 
       day_w1="星期三" 
       day_w2="Wednesday" 
       day_w3="Wed." 
     end
     if day_w=="4" then 
       day_w1="星期四" 
       day_w2="Thursday" 
       day_w3="Thur." 
     end
     if day_w=="5" then 
       day_w1="星期五"  
       day_w2="Friday" 
       day_w3="Fri." 
     end
     if day_w=="6" then 
       day_w1="星期六" 
       day_w2="Saturday" 
       day_w3="Sat." 
     end
     yield(Candidate("date", seg.start, seg._end, day_w1, " "))
     yield(Candidate("date", seg.start, seg._end, day_w2, " "))
     yield(Candidate("date", seg.start, seg._end, day_w3, " "))
     yield(Candidate("week", seg.start, seg._end, os.date("%w"),""))
   end
 end
 return translator

③在用户配置文件中开启(*.custom.yaml文件)

#若你的配置文件中有engine/translator,则后面直接加入代码
    - lua_translator@week_translator
#若你的配置文件中无engine/translator项,则加入
  engine/+:
    translators/+:
      - lua_translator@week_translator
#此处@后面的名称必需与rime.lua文件中的定义名称一致

以上配置文件的合集打包可在公众号获取。

参考:感谢Github项目网址作者的方案。

以上就是今天的内容,这篇文章能帮到你是我写作的意义所在,有任何问题可以评论或私信。当然,您的点赞与关注也是对我最大的支持与肯定,也是我继续写作的动力源泉。

了解更多教程可关注公众号

标签:translator,输入法,end,获取,lua,seg,RIME,date,day
来源: https://blog.csdn.net/qq_43108090/article/details/122729631