Shibuya.rbで発表してきた #shibuyarb #rubymotionjp

以前、書いた記事(最近投げたpull requestとかソーシャルコーディングとかリファクタリング )の反響が若干あったので、RubyMotionTokyo meetupの宣伝も兼ねて発表してきた。

ibをリファクタリングして、tsort依存関係解決の機能を導入したという話。

 
 
tsortの使い方の話は一切してなかったのですけど、公式ドキュメントの通り使うとすげー簡単に使えます。 http://doc.ruby-lang.org/ja/2.0.0/class/TSort.html

require 'tsort'

class Hash
  include TSort
  alias tsort_each_node each_key
  def tsort_each_child(node, &block)
    fetch(node).each(&block)
  end
end

{1=>[2], 2=>[3, 4], 3=>[], 4=>[]}.tsort #=> [3, 4, 2, 1]

こんな感じで使えて、HashじゃなくてもTSortをincludeして、tsort_each_nodeとtsort_each_child(node, &block)ってメソッドを実装すれば使えます。