quattro_4's diary

また同じ過ちを繰り返すと気付かんのか!?

Objective-CのコードをRubyMotionに変換するSublime Textプラグイン

Objective-C to RubyMotion Code Converter for Sublime Text

kyamaguchi/SublimeObjC2RubyMotion · GitHub

Install

Package Control利用できます

Packageフォルダ内にgit cloneしても使えます

他にrepository channelをaddする方法がある

Testを走らせる方法

Sublime Text 2から核となるclassとテストを切り離して、速く簡単にテストできるようにした

$ cd ~/Library/Application\ Support/Sublime\ Text\ 2/Packages/ObjC2RubyMotion
$ python tests/all_test.py
# Requirement: ruby
$ gem install guard
$ gem install guard-shell
$ guard

Guard 超快適




(旧) Testを走らせる方法

Sublime Textのプラグインでテストのあるものはほとんどないが、SublimeText/VintageEx · GitHubやその他の情報をもとにテスト駆動で作れるようにした

^⇧⌘TEnterするとunittestが走る

自分で試したい場合は、githubでforkして、Package内にforkしたリポジトリをクローンする

ここでいくつか問題がある

test_runner.pyまたはObjC2RubyMotion.pyを変更して拡張することになるが、ただ変更してテストを走らせても古いコードのままの場合がある

プラグインのフォルダで $ rm *pyc 消してもうまくいかない

1. 変更を検知するためにデバッグプリントを追加

ObjC2RubyMotion.py

    def __init__(self, s):
        print("a")
        self.s = s

2. コンソールを表示してコマンドのログを出す

View ▶ Show Console
^` または ^⇧@

コンソールで以下を実行

sublime.log_commands(True)

3. 以下をコメントアウトしリロードするようにする

test_runner.py 4行目くらい

import ObjC2RubyMotion
ObjC2RubyMotion = reload(ObjC2RubyMotion)

4. 変更のあるたびにtest_runner.pyをSave

また変更のあるたびに 1 をprint("b") などに変更

これで面倒さはまだまだ残るがなんとかやっていける

Sublime Text 2は内蔵のpython 2.6で動いている

Pythonのエキスパートがいたらなー