rime中州韵小狼毫 Upper lua Filter 首字母大写滤镜

在 rime中州韵小狼毫 easyEnglish输入法 一文中, 我们定义了 easy-English 输入方案。输入效果如下👇:
20240103112545

我们知道,在英文世界中,单词有首字母大写的习惯,如果我们输入 english 单词后,再回来改首字母为 E,这体验,不说了,是比较酸爽的。

今天我们将要提供的 Upper_Filter 是一个 rime中州韵小狼毫输入法中的一个 Filter,该 Upper_Filter 所提供的功能,是为我们的第一个候选单词,提供一个首字母大写的选项供我们选择使用。效果如下👇:
20240103114059

Upper_Filter.lua

Upper_Filter.lua 文档是我们要定义 Upper_Filter 接口方案的 lua 脚本文档。我们在 Upper_Filter.lua 脚本文档中完成以下👇脚本:

-- Upper_Filter.lua
-- Copyright (C) 2023 yaoyuan.dou <douyaoyuan@126.com>
-- 这个脚本,用于为英文单词提供一个首字母大写的候选项-- 如果需要debug,可以在这里进行函数功能调试
local function _specialFunc(input, env)for cand in input:iter() doyield(cand)end
endlocal function _upperFilter(input, env)local cands = {}local idx, idxSelflocal selfFlglocal candTxtLenidx = 0idxSelf = 0for cand in input:iter() doidx = idx + 1 --索引位置selfFlg = cand.comment:find('☯')if selfFlg then--自动造词数量idxSelf = idxSelf + 1end--匹配英文字母local s,e = string.find(cand.text,"^[a-z]+$")if nil == s then--匹配失败,说明不是英文单词if selfFlg then--对于自动造词选项,使用如下逻辑if idxSelf == 1 and idx == idxSelf then--对于第一条自动造词选项,不加干涉yield(cand)else--对于非第一条自动造词选项,限制其长度--candTxtLen = utf8.len(cand.text)yield(cand)endelse--对于非自动造的词,则正常输出yield(cand)endelse--匹配成功,说明是英文单词yield(cand)if idx == 1 then--如果这是第一个候选词,提供一个首字母大写的选项local thisTxt=cand.text:gsub("^%l",string.upper)yield(Candidate("word", cand.start, cand._end, thisTxt, ''))--idx额外加1idx = idx + 1endendend
endlocal function upperFilter(input, env)--获取debug选项开关状态local debugSwitchSts = env.engine.context:get_option("debug")if debugSwitchSts then_specialFunc(input,env)else_upperFilter(input, env)end
endreturn _upperFilter

👆以上脚本中,存在部分逻辑用于检测候选项是否是完全的英文单词,这是为了避免对非英文单词进行 Upper 转换。这部分的判断在一些中英混输的输入方案中是有作用的。

Upper_Filter.lua 文档应该位于 用户文件夹 下的 lua 文件夹内,如下👇:
20240103115732

rime.lua

同样的,我们在 Upper_Filter.lua 脚本内所定义的 Upper_Filter 方法,需要在 rime.lua 中转成 Upper_Filter 接口。我们在 rime.lua 中增加以下👇配置:

help_translator = require("help")
inputShow_translator = require("inputShow")
inputShow_Filter = require("inputShow_Filter")
Upper_Filter = require("Upper_Filter")

rime.lua 文档应该放置在 用户文件夹 内,如下👇:
20240103121052

easy_en.custom.yaml

Upper_Filter 接口已经准备完成,接下来我们需要在输入方案中配置使用该 Upper_Filter。承接本文开头所述使用场景,我们在 easyEnglish 输入方案中配置使用 Upper_Filter

用户文件夹 内的 easyEnglish 输入方案的方案文档 easy_en.schema.yaml 的补丁文档 easy_en.custom.yaml 内,我们配置增加如下👇 Filter

patch:engine/filters/+:# 下面的滤镜会对候选项进行格式化处理- lua_filter@Upper_Filter #英文后加空格滤镜# 上面的滤镜会增加候选词选项- uniquifier

👆以上的配置中,我们在 patch 节点下的 engine 节点下的 filter 节点增加了 Upper_Filter,为了保持候选项的唯一性,我们同时增加了 uniquifier

效果欣赏

在完成了一上脚本和配置的修改保存后,重新部署 rime中州韵/小狼毫 输入法,则我们即可以在 easyEnglish 输入方案下看到 Upper_Filter 所带来的首字母大写的效果,如下👇:
20240103122007

Upper_Filter.lua/rime.lua/easy_en.custom.yaml 文档

👆上述 Upper_Filter.luarime.luaeasy_en.custom.yaml 三个文档,你可以从 Upper_Filter.zip 下载取用。

小结

本文分享了在 rime中州韵小狼毫输入法中配置 Upper_Filter 滤镜以实现在英文输入中英文单词首字母大写的功能。在 Upper_Filter.lua 文档中定义并实现了首字母大写的功能方法,在 rime.lua 文档中将 Upper_Filter 方法映射为 Upper_Filter 滤镜接口,最后以 easyEnglish 输入方案为例,在 easy_en.custom.yaml 文档中配置了 Upper_Filter 滤镜,最最终观察到了首字母大写的效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/593793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt6.5类库详解:QComboBox

哈喽大家好&#xff0c;欢迎关注公众号(20YC编程)&#xff0c;有免费C视频课程哦&#xff01; -今日内容- 1. QComboBox介绍 QComboBox是一个下拉列表框组件类&#xff0c;它提供了一个下拉列表供用户选择&#xff0c;也可以直接当作一个QLineEdit用作输入。 QComboBox除了显…

探索 Vue 实例方法的魅力:提升 Vue 开发技能(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

微服务-OpenFeign-工程案例

Ribbon 前置知识 是NetFlix的开源项目&#xff0c;主要来提供关于客户端的负载均衡能力。从多个服务提供方&#xff0c;选取一个节点发起调用。 Feign:NetFlix,SpringCloud 的第一代LB&#xff08;负载均衡&#xff09;客户端工具包。 OpenFeign:SpringCloud自研&#xff0c…

什么是 NAS?

一、什么是 NAS&#xff1f; 在数字化时代&#xff0c;小型企业面临着日益增长的数据存储需求。为了应对这一挑战&#xff0c;网络附加存储&#xff08;NAS&#xff09;系统成为了许多企业的首选解决方案。NAS系统是一种连接到网络的存储设备&#xff0c;允许授权网络用户和异…

软件测试作业‖pytest+po+csv+html报告+cookie+selenium

软件测试作业‖pytestpocsvhtml报告cookieselenium 先用本地部署的系统试了下 或者UFT自动化测试里诺图书管理系统软件测试 # &#xff0c;#测试报告# #性能测试#&#xff0c;#测试用例#&#xff0c; #自动化测试# Selenium 的 Web自动化测试基本要求和注意事项 1.请使用ch…

JRT控制打印机

本次测试打印机控制和纸张方向控制。 打印机状态 选择打印机 控制纸张 定义纸张 旋转纸张 不旋转纸张 A4

Modbus 通信协议 二

Modbus 常用缩写 通用Modbus帧结构 -应用数据单元&#xff08;ADU&#xff09; Modbus数据模型 Modbus ADU 和 PDU 的长度 Modbus PDU结构 串行链路上的 Modbus 帧结构 Modbus 地址规则 ASCLL 模式 和 RTU 模式的比较 RTU 模式 RTU 模式位序列 帧格式 帧的标识与鉴别 CRC 循环冗…

openGauss学习笔记-183 openGauss 数据库运维-升级-升级操作

文章目录 openGauss学习笔记-183 openGauss 数据库运维-升级-升级操作183.1 就地升级和灰度升级操作步骤 openGauss学习笔记-183 openGauss 数据库运维-升级-升级操作 介绍就地升级、灰度升级和滚动升级的详细操作。 183.1 就地升级和灰度升级操作步骤 以root身份登录节点。 …

如何使用LightsOut生成经过混淆处理的DLL

关于LightsOut LightsOut是一款功能强大的DLL生成工具&#xff0c;该工具可以帮助广大研究人员轻松生成经过混淆处理的DLL。该工具专为红队研究人员设计&#xff0c;生成的DLL可以在研究人员尝试绕过反病毒产品时禁用AMSI和ETW&#xff0c;从而更好地测试目标系统的安全性。 …

Gin 集成 prometheus 客户端实现注册和暴露指标

前言 当我们构建一个 Web 应用程序时&#xff0c;了解应用程序的性能和行为是非常重要的。Prometheus 是一个流行的开源监控系统&#xff0c;它提供了强大的指标收集和查询功能&#xff0c;可以帮助我们监控应用程序的各个方面。 在 Gin 中集成 Prometheus 可以让我们更方便地监…

使用Matplotlib绘制模拟上海城市气温变化图

模拟上海气温变化折线图 实现步骤 准备数据创建画布绘制图像显示图像 基本实现 示例代码&#xff1a; import matplotlib.pyplot as plt import random# 准备数据 x range(60) y_shanghai [random.uniform(15,18) for _ in x]# 创建画布 plt.figure(figure(20,8), dpi10…

Java 基础学习(十九)网络编程、反射

1 Socket编程 1.1 Socket编程概述 1.1.1 Socket简介 在网络编程中&#xff0c;Socket&#xff08;套接字&#xff09;是一种抽象概念&#xff0c;它用于在不同计算机之间进行通信。Socket可以看作是一种通信的端点&#xff0c;可以通过Socket与其他计算机上的程序进行数据传…

盛最多水的容器(力扣11题)

例题&#xff1a; 分析&#xff1a; 这道题给出了一个数组&#xff0c;数组里的元素可以看成每一个挡板&#xff0c;要找到哪两个挡板之间盛的水最多&#xff0c;返回盛水量的最大值。这其实是一个双指针问题。 我们可以先固定第一个挡板( i )和最后一个挡板( j )&#xff0c…

gitee创建仓库

描述 本文章记录了怎么在gitee上创建项目&#xff0c;以及使用vscode提代码到远程呢个仓库&#xff0c;如何创建一个新分支&#xff0c;并将新分支提交到远程仓库。 1、创建远程仓库 在创建远程仓库之前要先进行ssh密钥的设置 &#xff08;1&#xff09;打开黑窗口&#xff…

计算机丢失mfc110.dll的5种常用解决方法分享

丢失动态链接库文件&#xff08;DLL&#xff09;是比较常见的一种情况&#xff0c;其中之一就是“计算机丢失mfc110.dll”。这个问题通常是由于系统文件损坏或缺失引起的&#xff0c;给计算机的正常运行带来了困扰。为了解决这个问题&#xff0c;我总结了以下五种方法&#xff…

顶帽运算在OpenCv中的应用

项目背景 假如我们拍了一张自拍&#xff0c;想为自己的照片添加一个酷炫的火星飞舞的效果&#xff0c;素材库中正好有一张火焰的照片&#xff0c;如果想去除图中的火焰&#xff0c;只保留火星效果&#xff0c;可以使用顶帽子算法 图片中的火星部分正好属于比周围亮一些的斑块…

LabVIEW开发滚筒洗衣机动态监测系统

LabVIEW软件在滚筒洗衣机的动态监测和分析中扮演着关键角色。本案例展示了如何利用LabVIEW开发的系统来优化洗衣机的性能和可靠性。 首先&#xff0c;在建立洗衣机的动力学模型基础上&#xff0c;利用LabVIEW进行了关键零部件的动态优化设计。通过LabVIEW的高级计算和模拟功能…

【JavaFX】JDK11 基于Gson、hutool、Jackson持久化存储实体类数据的解决方案 (读取、追加、去重、写入json对象)

文章目录 开发环境效果前言一、Gson是什么?二、使用步骤1.引入依赖2.创建实体类创建 JsonFileService类创建JsonFileService的实现类 JsonFileServiceImpl三、实现效果开发环境 JDK11IDEA 2023.3Gson、hutool、JacksonJavaFX 11效果 前言 使用JDK1

112. 雷达设备(贪心/逆向思考)

题目&#xff1a; 112. 雷达设备 - AcWing题库 输入样例&#xff1a; 3 2 1 2 -3 1 2 1输出样例&#xff1a; 2 思路&#xff1a; 代码&#xff1a; #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include<…

BMS、AFE、菊花链技术

一、BMS的分布式架构和集中式架构 AFE在从板中&#xff0c;用来采集电池电压和温度&#xff0c;以及均衡管理 BMS通常以分布式架构为主&#xff0c;即分为主板和从板。原来主从板上都有微处控制器。从板采集单体电池电压和温度&#xff0c;通过CAN总线传给主板。 而现在的趋势…