Atom飞行手册翻译: 3.4 文本处理包

简介: 文本处理包在我们写完第一个包之后,让我们看一看我们能写出来的其它包的例子。这一节会引导你创建一个简单的命令来将选中的文字替换为字符画(ascii art)。

文本处理包

在我们写完第一个包之后,让我们看一看我们能写出来的其它包的例子。这一节会引导你创建一个简单的命令来将选中的文字替换为字符画(ascii art)。在你在单词“cool”选中的时候运行我们的命令,它会被替换为:

                                     o888
    ooooooo     ooooooo     ooooooo   888
  888     888 888     888 888     888 888
  888         888     888 888     888 888
    88ooo888    88ooo88     88ooo88  o888o

这个例子应该展示了如何在当前的文本缓冲区做基本的文字操作,以及如何处理选择。

最后的包在 https://github.com/atom/ascii-art 中查看。

基本的文字插入

首先按下cmd-shift-P来弹出命令面板。然后输入“generate package”并且选择“Package Generator: Generate Package”命令,就像我们在“包生成器”一节中做的那样。输入ascii-art作为包的名字。

现在让我们编辑包中的文件,来让我们的字符画包做一些有意思的事情。由于这个包并不需要任何UI,我们可以把所有视图相关的移除,所以可以放心删除lib/ascii-art-view.coffeespec/ascii-art-view-spec.coffeestyles/

接下来,打开lib/ascii-art.coffee并删除所有视图代码,所以它看起来像这样:

{CompositeDisposable} = require 'atom'

module.exports =
  subscriptions: null

  activate: ->
    @subscriptions = new CompositeDisposable
    @subscriptions.add atom.commands.add 'atom-workspace',
      'ascii-art:convert': => @convert()

  deactivate: ->
    @subscriptions.dispose()

  convert: ->
    console.log 'Convert text!'

创建命令

现在让我们添加一个命令。强烈建议你为你的命令取一个命名空间,使用包名后面带着一个:。所以你可以看到在代码中,我们把命令叫做ascii-art:convert,并且当它调用时会调用convert()方法。

到目前为止,它只会在控制台中记录。让我们使它向文本缓冲区插入一些字符来开始。

convert: ->
  if editor = atom.workspace.getActiveTextEditor()
    editor.insertText('Hello, World!')

就像在“字数统计”中那样,我们使用atom.workspace.getActiveTextEditor()来获取表示当前活动编辑器的对象。如果convert()方法在没有编辑器获取焦点时调用,它会简单地返回一个空白的字符串,所以我们可以跳过下一行。

接下来我们使用insertText()方法,向当前的文本编辑器插入一个字符串。无论光标当前在编辑器的哪里,都会在光标处插入文本。如果有文本被选中,会把选中文本替换成“Hello, World!”文本。

重新加载包

在我们能够触发ascii-art:convert之前,我们需要通过重新加载窗口,来加载我们的包的最新代码。从命令面板或按下ctrl-alt-cmd-l来运行“Window: Reload”命令。

触发命令

现在可以打开命令面板并搜索“Ascii Art: Convert”命令了。但是根本找不到。要修正它,打开package.json并找到activationCommands属性。活动命令通过在命令不使用时延迟它们的加载,来加快Atom的启动。所以把现有的命令移除,并在activationCommands中添加ascii-art:convert

"activationCommands": {
  "atom-workspace": "ascii-art:convert"
}

首先,通过命令面板中的“Window: Reload”命令重新加载窗口,现在你可以执行“Ascii Art: Convert”命令了,它会输出“Hello, World!”。

添加快捷键

现在我们来添加用于触发“ascii-art:convert”命令的快捷键。打开keymaps/ascii-art.cson,添加一个键绑定来将ctrl-alt-a链接到ascii-art:convert命令上。由于你不需要预设的键绑定,你可以删除它们。

完成之后它应该像这样:

'atom-text-editor':
  'ctrl-alt-a': 'ascii-art:convert'

现在重新加载窗口,并验证快捷键是否工作。

添加字符画

现在我们需要将被选字符转换为字符画。为了完成它我们使用npm中的figlet node模块。打开package.json,添加figlet的最新版本到dependencies中:

"dependencies": {
  "figlet": "1.0.8"
}

保存文件之后从命令面板运行“Update Package Dependencies: Update”。这会自动安装包的node模块依赖,在这个例子中只有figlet。无论什么时候你更新了package.json文件中的dependencies字段,你都要需要运行“Update Package Dependencies: Update”命令。

如果由于某种原因没有生效,你会看到“Failed to update package dependencies”这样的消息,并且会找到一个你的目录下有个新的npm-debug.log文件。这个文件会告诉你具体哪里有错误。

现在在lib/ascii-art.coffee中请求(require)figlet node模块,并且将被选文本转换成字符画来代替插入“Hello, World!”。

convert: ->
  if editor = atom.workspace.getActiveTextEditor()
    selection = editor.getSelectedText()

    figlet = require 'figlet'
    font = "o8"
    figlet selection, {font: font}, (error, art) ->
      if error
        console.error(error)
      else
        editor.insertText("\n#{art}\n")

重新加载编辑器,选择编辑器窗口中的一些文本,并按下ctrl-alt-a,取而代之的是,它会被替换成一个滑稽的字符画版本。

在这个例子中,我们需要快速查看一些新的东西。首先是editor.getSelectedText(),像你猜的那样,返回当前选中的文本。

之后我们调用Figlet的代码,来将它转换成别的东西,并使用editor.insertText()用它替换当前选中的文本。

小结

在这一节中,我们编写了一个无UI的包,用于获取选中文本并替换为处理过的版本。它可能会对创建文本提示和检查工具有帮助。

相关文章
|
25天前
|
机器学习/深度学习 自然语言处理 API
《Python 语音转换简易速速上手小册》第4章 语音到文本的转换(2024 最新版)(上)
《Python 语音转换简易速速上手小册》第4章 语音到文本的转换(2024 最新版)
28 0
|
前端开发 JavaScript
Atom飞行手册翻译: 4.2 深入键表(keymap)
深入键表(keymap) 键表文件是以JSON或者CSON编码的文件,其中含有嵌套的哈希表。它们的工作方式像是样式表,但是它们指定匹配选择器的元素的快捷键的作用,而不是应用样式属性。
1032 0
|
前端开发
Atom飞行手册翻译: 3.9 从Textmate中转换
从Textmate中转换 可能在Textmate中有你喜欢或者使用过的主题和语法,并且你想要把它们转换到Atom中。如果是这样的话,你很幸运,因为有很多工具可以用来转换它们。
1066 0
|
API 开发工具 git
Atom飞行手册翻译: 4.5 ~ 4.8
开发Node模块 Atom中的一些包是Node模块,而不是Atom的包。如果你想要修改这些Node模块,例如atom-keymap,你需要把它们链接到不同于普通Atom包的开发环境中。
967 0
|
安全 开发者
Atom飞行手册翻译: 3.7 调试
调试 Atom拱了一些工具来帮助你理解预料之外的行为和调试问题。这篇指南介绍了一些工具和方法用于帮助你调试,以及提供了一些提交工单(issue)时的帮助信息。
1096 0
|
前端开发 开发者
Atom飞行手册翻译: 2.13 基本的自定义
基本的自定义 在我们感受到Atom中所有东西的便利之后,让我们看看如何改进它。可能有一些快捷键你经常使用但是感觉很别扭,或者一些颜色不是十分适合你。
1123 0
|
前端开发 JavaScript API
Atom飞行手册翻译: 3.1 ~ 3.2
现在是时候来介绍在这一Hackable的编辑器中,真正“Hackable”的部分了。像我们在整个第二章中看到的那样,Atom中很大一部分都由一大堆包组成。
914 0
Atom飞行手册翻译: 2.14 小结
小结 到目前为止,你应该是一个Atom高级用户了。你应该能够像一个行家那样浏览和处理文本和文件。你也应该能够从里到外定制Atom,来让它看起来和表现得和你想象中一样。
714 0
Atom飞行手册翻译: 1.3 Atom基础
Atom基础 既然Atom在你的系统中已经安装了,让我们启动、配置并且熟悉这一编辑器吧。 当你首次启动Atom时,你会看到这样一个界面: 这是Atom的欢迎界面,它会给你一些很好的建议,关于如何开始使用这个编辑器。
1152 0
|
前端开发 开发者
Atom飞行手册翻译: 3.5 创建主题
创建主题 Atom的界面使用HTML渲染,并且通过Less来定义样式,它是CSS的超集。不要担心之前从未听说过Less,它类似于CSS,但是带有一些便捷的扩展。
895 0