ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

Obj​C2​Ruby​Motion

kyamaguchi 全部

Objective-C 到 RubyMotion 代码转换器,适用于 Sublime Text

详情

  • 2013.05.26.15.03.47
  • github.​com
  • github.​com
  • 11年前
  • 2小时前
  • 11年前

安装量

  • 总计 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

源码
raw.​githubusercontent.​com

Sublime Text 2/3 的 ObjC2RubyMotion 转换器

Build Status

一个命令插件,允许将 Objective-C 代码转换为 Ruby Motion。

截图

screenshot

使用 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

自定义

  1. 分支它

  2. 移除原始的ObjC2RubyMotion然后克隆你的版本,或者将你的仓库作为另一个git远程库添加。

$ cd ~/Library/Application\ Support/Sublime\ Text\ 2/Packages
  $ git clone [email protected]:yourname/SublimeObjC2RubyMotion.git ObjC2RubyMotion
  1. 复制测试文件并编写新的测试。

cp tests/test_basic.py tests/test_custom.py

  1. :snake: 修改并测试

通常情况下,你应该修改 CodeConverter.pytest_*.py

推荐使用 $ guard

注意

此插件的大多数用户可能是rubyist,而不是pythonista。

目前,此转换器主要由正则表达式组成。

如果我们尝试提高此转换器以转换更复杂的表达式,可能我们需要用使用解析器/分词器/扫描器的转换器来替换该转换器。

欢迎Fork。

注意意外的字符串替换,它们可能会发生,并且将成为问题。