SiriBlog

siriyang的个人博客


  • 首页

  • 排行榜

  • 标签115

  • 分类37

  • 归档319

  • 关于

  • 搜索

用JS制作你的第一个PopClip插件

发表于 2022-05-24 更新于 2022-09-23 分类于 计算机 , 技术 , JavaScript 阅读次数: Valine:
本文字数: 1.9k 阅读时长 ≈ 2 分钟

序言

PopClip是Mac平台上的一款文本增强软件,可以与用户光标所勾选的文本进行交互,实现很多复杂的文本处理功能,并与其他软件进行联动。

PopClip本身只是一个提供文本交互接口的平台,其主要文本处理功能是通过安装各种插件进行实现。官方插件市场上已经提供了大量精心挑选的插件,能够满足基本的文本处理需求,同时也提供了插件开发文档,供用户根据自己独特的需求进行客制化插件开发。

鉴于平时从PDF文档中复制代码经常会出现多余的空行,官方插件市场上又没有去除空行的插件,于是决定自己开发一个,顺便也练练手,为以后更复杂需求的插件开发进行技术积累。

目前PopClip插件的可以通过Snippets、快捷指令、AppleScript、JavaScript、Shell等方式进行开发。本来想使用自己最顺手的python,但是经过初步尝试以后发现,python脚本想要与PopClip进行交互只能通过环境变量的方式,很不方便且功能受限。最终还是通过接口更为丰富的JavaScript脚本。

文件结构

插件的文件结构如下:

1
2
3
4
5
RemoveNoneLine
├── Config.json # 插件的配置文件
├── README.md # 插件的说明文档
├── icon.png # 插件的图标
└── removeNoneLine.js # 实际运行代码的脚本文件

配置文件

1
2
3
4
5
6
7
{
"popclip version": 3785,
"identifier": "cn.siriyang.popclip.extension.removeNoneLine",
"name": "去除空行",
"icon": "icon.png",
"javascript file": "removeNoneLine.js"
}

按照官方开发文档的要求,配置文件是PopClip插件必备的文件,其文件格式有多种,这里我选择个人比较喜欢的json格式进行编写。

在配置文件中我仅填写了几个关键字段,并选择以外部文件的方式运行JavaScript代码,这样将代码与配置文件分离,代码编写起来要清晰很多。

脚本文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//文本输入
const lines = popclip.input.text.match(/[^\r\n]+/g) // 按行读取

//文本转换
var res=[]

for( var i=0; i<lines.length;i++){ //遍历所有行
if(lines[i].replace(/^\s+|\s+$/g,"").length>0){ // 判断是否是空行
res.push(lines[i]) // 保留非空行
}
}

//文本输出
popclip.pasteText(res.join('\n')) // 将所有行拼接并粘贴

虽然整个去除空行的代码很简单,但却具备文本输入、文本转换、文本输出的完整流程:

  1. 先将光标勾选的文本按行一行行读入;
  2. 然后对每一行去除空格后再判断其长度是否大于0,将非空的行保留下来;
  3. 在最后使用换行符进行拼接,再将修改好的文本粘贴替换光标勾选的文本。

打包安装

当代码编写完毕以后就可以开始打包安装了。PopClip插件的打包安装方法很简单,只需要修改文件夹后缀为.popclipext 即可将其转换为一个插件安装包,然后双击进行安装。

在安装自制或第三方插件的时候PopClip默认会弹出警告窗口,以防止安装未知的插件造成系统安全问题。由于在开发过程中会反复安装测试,官方提供了关闭警告窗口的方法,需要在终端中运行下面的命令,然后重启PopClip。

1
defaults write com.pilotmoon.popclip LoadUnsignedExtensions -bool YES

同理,当你在网上下载一个PopClip插件以后,只需要将.popclipext后缀去掉即可转换为文件夹查看其中的源码进行学习改造。对于在官网下载的插件后缀为.popclipextz ,需要先将其改为.zip在解压得到.popclipext 。

效果测试

结语

通过本次去除空行插件的简单案例尝试,完成了PopClip插件完整的开发流程。文本输入、文本转换、文本输出的基本范式确定下来以后,之后开发新的插件只需要调整相应模块即可。当然PopClip插件还有过滤器、参数设置等更为复杂的功能,等以后有需求的时候再针对性查询文档学习。

本文同步发布于少数派

-------- 本文结束 感谢阅读 --------
觉得文章写的不错的话,请我喝瓶怡宝吧!😀
SiriYang 微信支付

微信支付

SiriYang 支付宝

支付宝

  • 本文标题: 用JS制作你的第一个PopClip插件
  • 本文作者: SiriYang
  • 创建时间: 2022年05月24日 - 15时05分
  • 修改时间: 2022年09月23日 - 22时09分
  • 本文链接: https://blog.siriyang.cn/posts/20220524150020id.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
JavaScript PopClip macOS
2023重庆邮电大学计算机网络803大纲解析
Git学习笔记
  • 文章目录
  • 站点概览
SiriYang

SiriYang

努力搬砖攒钱买镜头的摄影迷
319 日志
33 分类
88 标签
RSS
GitHub E-Mail
Creative Commons
Links
  • 友情链接
  • 作品商铺

  1. 序言
  2. 文件结构
  3. 配置文件
  4. 脚本文件
  5. 打包安装
  6. 效果测试
  7. 结语
蜀ICP备19008337号 © 2019 – 2025 SiriYang | 1.7m | 25:41
0%