在 rime中州韵小狼毫 help lua Translator 中我们分享了如何使用 lua
脚本定义一个 translator
,并以 五笔・拼音 为例引用了该 translator
,并且达到了预期的效果。
今天,我们继续通过 lua
脚本为 rime
中州韵/小狼毫 输入法打造一个 translator
,这个translator
的作用是将用户输入的原始字符,根据我们的需要,透传到候选项中,以便为将来的 filter
处理程序提供必要的输入。
inputShow.lua
我们在 inputShow.lua
文档内定义我们的 translator
逻辑,translator
逻辑定义如下👇:
--对于指定的输入符号,需要直接提供对应转换值的输入选项,供后处理使用
local cands={}
--以下单字母需要输出
cands['a']='a'
cands['b']='b'
cands['c']='c'
cands['d']='d'
cands['e']='e'
cands['f']='f'
cands['g']='g'
cands['h']='h'
cands['i']='i'
cands['j']='j'
cands['k']='k'
cands['l']='l'
cands['m']='m'
cands['n']='n'
cands['o']='o'
cands['p']='p'
cands['q']='q'
cands['r']='r'
cands['s']='s'
cands['t']='t'
cands['u']='u'
cands['v']='v'
cands['w']='w'
cands['x']='x'
cands['y']='y'
cands['z']='z'
--以下是常用简写的输出
cands['id']='id'
cands['ip']='ip'
--以下是化学元素简写,需要输出
cands['he']='He'
cands['li']='Li'
cands['be']='Be'
cands['ne']='Ne'
cands['na']='Na'
cands['mg']='Mg'
cands['al']='Al'
cands['si']='Si'
cands['cl']='Cl'
cands['ar']='Ar'
cands['ca']='Ca'
cands['sc']='Sc'
cands['ti']='Ti'
cands['cr']='Cr'
cands['mn']='Mn'
cands['fe']='Fe'
cands['co']='Co'
cands['ni']='Ni'
cands['cu']='Cu'
cands['zn']='Zn'
cands['ga']='Ga'
cands['ge']='Ge'
cands['as']='As'
cands['se']='Se'
cands['br']='Br'
cands['kr']='Kr'
cands['rb']='Rb'
cands['sr']='Sr'
cands['zr']='Zr'
cands['nb']='Nb'
cands['mo']='Mo'
cands['tc']='Tc'
cands['ru']='Ru'
cands['rh']='Rh'
cands['pd']='Pd'
cands['ag']='Ag'
cands['cd']='Cd'
cands['in']='In'
cands['sn']='Sn'
cands['sb']='Sb'
cands['te']='Te'
cands['xe']='Xe'
cands['cs']='Cs'
cands['ba']='Ba'
cands['la']='La'
cands['ce']='Ce'
cands['pr']='Pr'
cands['nd']='Nd'
cands['pm']='Pm'
cands['sm']='Sm'
cands['eu']='Eu'
cands['gd']='Gd'
cands['tb']='Tb'
cands['dy']='Dy'
cands['ho']='Ho'
cands['er']='Er'
cands['tm']='Tm'
cands['yb']='Yb'
cands['lu']='Lu'
cands['hf']='Hf'
cands['ta']='Ta'
cands['re']='Re'
cands['os']='Os'
cands['ir']='Ir'
cands['pt']='Pt'
cands['au']='Au'
cands['hg']='Hg'
cands['tl']='Tl'
cands['pb']='Pb'
cands['bi']='Bi'
cands['po']='Po'
cands['at']='At'
cands['rn']='Rn'
cands['fr']='Fr'
cands['ra']='Ra'
cands['ac']='Ac'
cands['th']='Th'
cands['pa']='Pa'
cands['np']='Np'
cands['pu']='Pu'
cands['am']='Am'
cands['cm']='Cm'
cands['bk']='Bk'
cands['cf']='Cf'
cands['es']='Es'
cands['fm']='Fm'
cands['md']='Md'
cands['no']='No'
cands['lr']='Lr'
cands['rf']='Rf'
cands['db']='Db'
cands['sg']='Sg'
cands['bh']='Bh'
cands['hs']='Hs'
cands['mt']='Mt'
cands['ds']='Ds'
cands['rg']='Rg'
cands['cn']='Cn'
cands['nh']='Nh'
cands['fl']='Fl'
cands['mc']='Mc'
cands['lv']='Lv'
cands['ts']='Ts'
cands['og']='Og'
function translator(input, seg)
--抛出一个选项,用于告诉下游输入的内容是什么,为了避免和正式输入内容混淆,加入一个 Str的前缀
yield(Candidate("inputShow", seg.start, seg._end, 'Str'..input, "inputShowStr"))
if nil~=cands[input] then
if ''==cands[input] then
yield(Candidate("inputShow", seg.start, seg._end, input, "inputShow"))
else
yield(Candidate("inputShow", seg.start, seg._end, cands[input], "inputShow"))
end
end
end
return translator
👆以上所展示的 lua
脚本中,定义了一组 cands
字符。当用户的输入与 cands
字符匹配时,则将这组输入的字符做为词组候选项抛出,效果如下👇:
👆如上图所示的效果,在我们的 inputShow.lua
脚本中, 我们会将用户的原始输入加 Str
前缀后抛出;如果所输入的字符存在于 cands
列表内,则抛出列表内的对应的值;同时,抛出的选项中,还加入了 inputShowStr
或者 inputShow
的 comment
内容以做标记。
👇如下,inputShow.lua
文档应该位于 用户文件夹 下的 lua 文件夹内:
rime.lua
如果你对 rime中州韵小狼毫 help lua Translator 还有印象,那么你应该已经猜到,我们在 inputShow.lua
中所定义的 translator
方法,需要在 用户文件夹 下的 rime.lua
内转换成 translator
接口,方可被 rime
中州韵小狼毫输入引擎所引用。我们在 rime.lua
中配置以下👇内容以转换 inputShow_translator
:
help_translator = require("help")
inputShow_translator = require("inputShow")
如果你的 用户文件夹 下没有 rime.lua
文档,你需要创建它,然后对其进行配置:
touch rime.lua
wubi_pinyin.custom.yaml
经过以上步骤,我们已经完成了对 inputShow_translator
的定义,根据我们的需要,我们在我们的输入方案的补丁文档中的 translators
节点下引用 inputShow_translator
即可。
本文依旧以 五笔・拼音 输入方案为例演示 inputShow_translator
的配置方式。我们需要在 五笔・拼音 输入方案的方案文档 wubi_pinyin.schema.yaml
的补丁文档 wubi_pinyin.custom.yaml
中做如下👇配置:
# encoding:utf-8
patch:
engine/translators/+: #增加以下translator
- lua_translator@inputShow_translator
- table_translator@custom_phrase # 指定使用 custom_phrase 进行输入字符的翻译
- lua_translator@help_translator
custom_phrase: # 设置用户字/词典
dictionary: ""
user_dict: Custom_phrase # 指向 Custom_phrase.txt 文档
db_class: stabledb
enable_completion: false
enable_sentence: true
initial_quality: 1
punctuator: # 设置标点符号集
import_preset: symbols
# 设置以下 translator 相关的开关
translator/enable_sentence: true #是否整句连打
translator/enable_user_dict: true #开启用户词典
translator/enable_encoder: true #是否自动造词
translator/encode_commit_history: false #对已上屏的内容整合成词条,看需求
translator/max_phrase_length: 4 #自动造词的最长字数
translator/enable_completion: true #编码逐渐提示开关;编码提示
最后,当你完成以上所有的文档和配置后,你需要 重新部署 你的 rime
中州韵小狼毫输入法,方可使以上所做的配置生效。
inputShow.lua
文档
👆上述 inputShow.lua
文档,你也可以通过 inputShow.lua 下载取用。
rime.lua
文档
👆上述 rime.lua
文档,你也可以通过 rime.lua 下载取用。
wubi_pinyin.custom.yaml
文档
👆上述 wubi_pinyin.custom.yaml
文档,你也可以通过 wubi_pinyin.custom.yaml 下载取用。
小结
以上就是今天分享的如何在 rime
中州韵小狼毫输入法中配置 inputShow_translator
的过程。今天所做的配置本身没有十分惊艳的效果,但这却是将来其它增强功能的基础。希望可以帮助到大家。