ObjC2RubyMotion
Objective-C 到 RubyMotion 代码转换器,适用于 Sublime Text
详情
安装量
- 总计 987
- Win 163
- Mac 762
- Linux 62
8月6日 | 8月5日 | 8月4日 | 8月3日 | 8月2日 | 8月1日 | 7月31日 | 7月30日 | 7月29日 | 7月28日 | 7月27日 | 7月26日 | 7月25日 | 7月24日 | 7月23日 | 7月22日 | 7月21日 | 7月20日 | 7月19日 | 7月18日 | 7月17日 | 7月16日 | 7月15日 | 7月14日 | 7月13日 | 7月12日 | 7月11日 | 7月10日 | 7月9日 | 7月8日 | 7月7日 | 7月6日 | 7月5日 | 7月4日 | 7月3日 | 7月2日 | 7月1日 | 6月30日 | 6月29日 | 6月28日 | 6月27日 | 6月26日 | 6月25日 | 6月24日 | 6月23日 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Mac | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Linux | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
README
Sublime Text 2/3 的 ObjC2RubyMotion 转换器
一个命令插件,允许将 Objective-C 代码转换为 Ruby Motion。
截图
使用 iShowU, KeyCastr, GIFBrewery
如何使用
光标或选中的行中的代码将被转换
// original
_window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = self.myNavController;
[self.window makeKeyAndVisible];
// select lines and run "objc_to_ruby_motion"
_window = UIWindow.alloc.initWithFrame(UIScreen.mainScreen.bounds)
self.window.rootViewController = self.myNavController
self.window.makeKeyAndVisible
安装
包控制
从 包控制 安装 ObjC2RubyMotion
软件包。
手册
从您的 Sublime 文件夹中克隆此仓库
Macosx
$ cd ~/Library/Application\ Support/Sublime\ Text\ 2/Packages
$ git clone https://github.com/kyamaguchi/SublimeObjC2RubyMotion.git ObjC2RubyMotion
键绑定
默认情况下,
转换
super+ctrl+i
objc_to_ruby_motion
转换项
按内部顺序
- 替换 NSString
@"String"
->"String"
- 删除行内注释
//
- 转换 blocks (可能不完美)
- 转换方括号表达式
[[Obj alloc] init]
->Obj.alloc.init
- 删除行尾的分号
;
- 删除尾部的
autorelease
- 删除 Object 的类型声明
Type *
在=
之前 - YES/NO
- Float
100.0f
->100
- CGRectMake
CGRectMake(10, 10, 20, 20)
->[[10, 10], [20, 20]]
不支持
- 复杂块
- if else 条件等。
- 动作
action:@selector(tapped:)
- 方法名和参数转换
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- 其他
注意
此转换器并非旨在完美转换。它的目的是帮助转换 Objective-C 代码片段。
某些复杂表达式可能无法正确转换。
测试
:smile: 幸运的是,ObjC2RubyMotion 有测试。
从命令行运行测试
$ cd ~/Library/Application\ Support/Sublime\ Text\ 2/Packages/ObjC2RubyMotion
$ python tests/all_test.py
或者
:racehorse: 使用 guard
# Requirement: ruby
$ gem install guard
$ gem install guard-shell
$ guard
自定义
分支它
移除原始的ObjC2RubyMotion然后克隆你的版本,或者将你的仓库作为另一个git远程库添加。
$ cd ~/Library/Application\ Support/Sublime\ Text\ 2/Packages
$ git clone [email protected]:yourname/SublimeObjC2RubyMotion.git ObjC2RubyMotion
- 复制测试文件并编写新的测试。
cp tests/test_basic.py tests/test_custom.py
- :snake: 修改并测试
通常情况下,你应该修改 CodeConverter.py
和 test_*.py
。
推荐使用 $ guard
。
注意
此插件的大多数用户可能是rubyist,而不是pythonista。
目前,此转换器主要由正则表达式组成。
如果我们尝试提高此转换器以转换更复杂的表达式,可能我们需要用使用解析器/分词器/扫描器的转换器来替换该转换器。
欢迎Fork。
注意意外的字符串替换,它们可能会发生,并且将成为问题。