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,一经查实,立即删除!

相关文章

力扣hot00 二叉树的中序遍历

&#x1f468;‍&#x1f3eb; 题目地址 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left…

Qt6.5类库详解:QComboBox

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

模糊查询导致索引失效怎么解决

模糊查询导致索引失效可能是由于模糊查询的特性&#xff0c;使得数据库引擎难以有效利用索引。以下是一些解决方法&#xff1a; 1、前缀索引&#xff1a; 如果你的模糊查询是以字符串的开头进行的&#xff0c;考虑使用前缀索引。前缀索引只包含列值的开头部分&#xff0c;可以…

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

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

关于Spring @Transactional事务传播机制详解

Spring事务传播机制 1.什么是事务传播机制&#xff1f;2.Spring事务传播类型Propagation介绍3.具体案例总结 Spring事务传播机制 1.什么是事务传播机制&#xff1f; 举个栗子&#xff0c;方法A是一个事务的方法&#xff0c;方法A执行过程中调用了方法B&#xff0c;那么方法B有…

微服务-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

Oracle清理审计和监听垃圾文件脚本

Oracle用户删除审计文件自动化脚本 $&#xff08;ORACLE&#xff09; vi oracle_auto_trace_del.sh#!/bin/bash #ORACLE cd /opt/oracle/app/oracle/admin/SID(数据库实例名)/adump find . -type f -name "*.aud" -mtime 10 |xargs rm -rf$&#xff08;ORACLE&#…

三、C语言中的分支与循环—goto语句 (10) (完)

在C语言中&#xff0c;goto语句允许程序无条件地跳转到同一函数内的标记位置。这个标记位置通过一个标签和冒号(:)来标示。goto语句可以用于从深层嵌套的循环或条件语句中直接跳出&#xff0c;或者跳过某些代码执行。尽管goto语句在某些情况下可以使程序逻辑变得清晰&#xff0…

C++中互斥量、锁有什么用?

文章目录 互斥量如何理解互斥量C 中互斥量的用法基本锁定和解锁使用 std::lock_guard 自动管理锁使用 std::unique_lock 获得更多控制 注意事项 几种不同类型的锁 创建一个C线程需要传入几个参数&#xff1f; 如何理解和使用C线程循环 C 类 函数 变量 进程 线程 C关于锁和互斥量…

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身份登录节点。 …

关于数据降维的几种方法

1.什么是数据降维&#xff1f; 数据降维是指将高维数据转化为低维数据的过程。在现实生活中&#xff0c;我们常常面临高维数据的问题&#xff0c;例如图像数据、文本数据、传感器数据等。高维数据在存储、处理和可视化方面都具有挑战性&#xff0c;而且可能导致过拟合问题。 …

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

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

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

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

Scrapy 1.3.0 使用简介

scrapy 1.3.0 python 2.7 创建一个项目&#xff1a; Before you startscraping, you will have to set up a new Scrapy project. Enter a directory whereyou’d like to store your code and run: scrapy startproject tutorial 然后就会得到一系列文件&#xff1a; 第一个爬…

使用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与其他计算机上的程序进行数据传…