angularjs - Sublime Text 片段 : Create camelcased string from the hyphenated file name

标签 angularjs sublimetext2 sublimetext3 sublimetext

我正在尝试为 AngularJs 创建一个 Sublime Text 片段。这个片段应该扩展到 AngularJs Controller (或服务等或任何 ng 组件)。在生成的代码中,它应该从带连字符的文件名中构造camelCase 中的 Controller 名称。

例如:

当我在一个名为 employee-benefits-controller.js 的空文件中键入片段字符串时,例如 ngctrl,它应该展开如下:

angular.module('').controller('EmployeeBenefitsController', ['', function(){

}]);

我正在尝试通过对其应用正则表达式来使用 $TM_FILENAME 变量来实现此转换。如果有人已经这样做了,请告诉我们。

最佳答案

你可以使用这样的东西:

<snippet>
    <content><![CDATA[
angular.module('${1:moduleName}').controller('${TM_FILENAME/(^|-|\.js)(.?)|/\U\2\E/g}', ['', function(){
    ${2://functionCode}
}]);
]]></content>
    <tabTrigger>ngctrl</tabTrigger>
</snippet>

笔记:

注意 1:也许您想更改范围,以便片段仅在 javascript 上下文中触发。

注意 2:我不熟悉 angularjs,所以我不知道它的命名约定(我认为在连字符 [-] 字符之后和名称的开头需要一个大写字母,但我不知道例如,知道在点字符之后是否需要大写字符)。因此,您可能必须调整该片段。

注3:表达式解释:
${TM_FILENAME/(^|-|.js)(.?)/\U\2\E/g}
  • TM_FILENAME 它的 var_name 项
  • (^|-|.js)(.?) 它是正则表达式(我们选择的变量部分)。
  • \U\2\E 它的 format_string (我们如何格式化我们选择的内容)。
  • 它的选项(g 表示全局,所以每次它选择它给定的格式)。
  • TM_FILENAME : 包含扩展名的文件名。
  • \U => 初始化大写转换。 \E => 完成大写转换。 \2 => 第二组,即第二个括号, (.?) ,它是单个字符或空字符串。
  • (^|-|.js)(.?) 首先,我们查找单词的开头( ^ ),或连字符( - ),或扩展名( .js )。
  • (.?) 然后我们在括号组(第二组)中选择该连字符之后(或单词开头或扩展名之后)的字符(如果有)。
  • 最后,我们按照说明对所选字符使用大写转换。请注意,由于扩展名后面没有字符,我们只是从输出中删除扩展名。

  • 注意 4:您可能知道,使用 ${1:moduleName} 和 ${2://functionCode} 可以让您在触发后快速移动(使用选项卡)和编辑片段的重要部分,例如模块或功能代码。

    关于angularjs - Sublime Text 片段 : Create camelcased string from the hyphenated file name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25991294/

    相关文章:

    sublimetext2 - Sublime Text 2 Latextools 不显示引用键

    sublimetext2 - 如何将 "--"设置为 Sublime Text 片段选项卡触发器?

    python - 我如何在 Anaconda 中正确使用 virtualenv?

    javascript - 将对象传递到选择框中的 ng-model

    javascript - 在我的情况下如何处理多个 http 请求?

    search - 如何在 Vim 中通过搜索所有缓冲区的内容直接进入任意缓冲区,就像在 Sublime Text 中按 Ctrl+P 一样?

    java - 如何编译和运行包含 Import with Sublime Text 2 的 Java 程序?

    regex - 仅替换标题中的字符

    angularjs - 使用 ng-readonly 动态设置只读不起作用

    javascript - 简单的 AngularJS Controller 不起作用