ObjC2RubyMotion
Objective-C to RubyMotion Code Converter for Sublime Text
Details
Installs
- Total 997
- Win 170
- Mac 765
- Linux 62
May 9 | May 8 | May 7 | May 6 | May 5 | May 4 | May 3 | May 2 | May 1 | Apr 30 | Apr 29 | Apr 28 | Apr 27 | Apr 26 | Apr 25 | Apr 24 | Apr 23 | Apr 22 | Apr 21 | Apr 20 | Apr 19 | Apr 18 | Apr 17 | Apr 16 | Apr 15 | Apr 14 | Apr 13 | Apr 12 | Apr 11 | Apr 10 | Apr 9 | Apr 8 | Apr 7 | Apr 6 | Apr 5 | Apr 4 | Apr 3 | Apr 2 | Apr 1 | Mar 31 | Mar 30 | Mar 29 | Mar 28 | Mar 27 | Mar 26 | Mar 25 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 0 | 0 | 0 | 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 | 1 |
Mac | 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 | 1 | 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 | 0 |
Readme
- Source
- raw.githubusercontent.com
ObjC2RubyMotion Converter for Sublime Text 2/3
A command plugin that enables to convert Objective-C code to Ruby Motion.
Screenshot:
Using iShowU, KeyCastr, GIFBrewery
How It Works
Code in the line of the cursor or selection are converted:
// 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
Install
Package Control
Install the ObjC2RubyMotion
package from Package Control.
Manual
Clone this repository from your Sublime packages directory:
Macosx
$ cd ~/Library/Application\ Support/Sublime\ Text\ 2/Packages
$ git clone https://github.com/kyamaguchi/SublimeObjC2RubyMotion.git ObjC2RubyMotion
Key Binding
By default,
For Conversion
super+ctrl+i
objc_to_ruby_motion
Conversions
In internal order
- Replace NSString
@"String"
->"String"
- Remove inline comments
//
- Convert blocks (may be not perfect)
- Convert square brackets expression
[[Obj alloc] init]
->Obj.alloc.init
- Remove semicolon
;
at the end of line - Remove
autorelease
at the end - Remove type declaration for Object
Type *
before=
- YES/NO
- Float
100.0f
->100
- CGRectMake
CGRectMake(10, 10, 20, 20)
->[[10, 10], [20, 20]]
NOT supported
- Complex block
- if else conditions etc.
- actions
action:@selector(tapped:)
- Method name and args conversion
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- Others
Note
This converter is not intended to convert perfectly. This is intended to help the conversion of Objective-C code snippets.
Some complex expression may not be converted correctly.
Tests
:smile: Fortunately ObjC2RubyMotion has tests.
Run test from command line
$ cd ~/Library/Application\ Support/Sublime\ Text\ 2/Packages/ObjC2RubyMotion
$ python tests/all_test.py
OR
:racehorse: Use guard
# Requirement: ruby
$ gem install guard
$ gem install guard-shell
$ guard
Customize
Fork it
Remove original ObjC2RubyMotion and clone yours OR add your repository as another git remote
$ cd ~/Library/Application\ Support/Sublime\ Text\ 2/Packages
$ git clone git@github.com:yourname/SublimeObjC2RubyMotion.git ObjC2RubyMotion
- Copy test file and write new test
cp tests/test_basic.py tests/test_custom.py
- :snake: Change and Test
Normally, you should change CodeConverter.py
and test_*.py
.
$ guard
is recommended.
Note
Probably most users of this plugin are rubyist, not pythonista.
This converter is mostly composed of regular expression for now.
If we try to improve this to convert more complex expressions, probably we need to replace the converter with the one using parser/tokenizer/scanner.
Fork is welcomed.
Care about unexpected string replacements. They could happen and they will be problems.