• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

I made a small utility library named
Wormhole.
The library enables us to communicate between caller and callee.

Here is a simple example of use.

ruby>>
require 'rubygems'
require 'wormhole'

def foo(array)
array << :foo # (1)
Wormhole.throw array
array << :baz # (3)
end

result = Wormhole.catch do
foo []
end.return do |array|
array << :bar # (2)
end
puts result.inspect # => [:foo, :bar, :baz]
<<--

First, the block passed to Wormhole.catch, the caller, is evaluated.
The foo method, the callee, throw an array object passing through the wormhole.
Then the array is caught by the last block passed to a return method. A block parameter of the block is the array.
Finally, the process goes back to the point 3 after the last block ends.
A return value of the foo method is returned via the return method.

By using this utility, you can participate to a depth of a complicated system from a safer position.

At the end, you can install this utility from the GitHub by using gem command like this.

pre>>
% sudo gem sources -a http://gems.github.com
% sudo gem install genki-wormhole
<<--

Have fun!

posted by takiuchi takiuchi on Sat 5 Jul 2008 at 01:51 with 2 comments
Hongli Hongli 07/06 16:49
What is the advantage over a regular 'yield', like this?

<pre> def foo(array)
array << :foo
yield(array)
array << :baz
end

foo do |array|
array << :bar
end</pre>
瀧内元気 瀧内元気 07/06 20:44
Suppose there is a black box system between your codes, like this:

caller -> blackbox -> callee

The wormhole enable us to pass anything through the black box to callee from caller without any modifications to the black box.

Vice-versa.

caller <- blackbox <- callee

For example, the black box tends to be a framework such as Ruby on Rails, the callee is a callback and the caller is your application code.
Contents rssrss
Google +1 button causes trouble with Amazon ELB
How to build collada-dom on Linux
cmakeをhomeの下にインストールする手順のメモ
原子レベルのレンダリングに関するメモ
gluLookAtの等価表現
Where the Fl_Gl_Box is / Fl_Gl_Boxのありか
How to display the list of options for CMake
How to install collada-dom to MacOS X
積分方程式の分類について
Terminology of parallel computing needs recomposition
Tags
memocmakecolladaopengl3Damazonatomiccgcomputingdnselbfltkgoogleissuemacmathparallelreportthoughtsメモ
Comments rssrss
Spencer Spencer: You don't have to re-compile it, this version work... 04/08 07:15
staiano staiano: Any chance we can get a recompile for 10.9? 01/10 01:47
falsefalse falsefalse: @tiancongxin try using this one https://github.com... 02/14 08:04
tiancongxin tiancongxin: TerminalCopyOnSelect not work on OS X 'Lion' , cou... 07/21 17:21
staiano staiano: Roderick you rock for recompiling it. Thanks. 03/25 02:42
瀧内元気 瀧内元気: The merbi.st domain has been expired. So now it is... 01/03 17:25
Roderick Roderick: I've compiled the current version from github, thi... 08/24 15:57
swissarmychainsaw swissarmychainsaw: How do I get around this error message? Error Term... 08/20 20:43
Services from s21g
YOMU Web小説リーダー
Web小説を音声で楽しむ読み上げリーダー
補助探
公開されている補助金・助成金情報を集約し、条件に合う制度を探しやすくするサービスです。
jotter.me
個人開発者のためのホスティング一体型ノートサービス
ハンドミラー
iPhone向けの手鏡アプリ
ツイプロ(twpro)
Twitterプロフィールの高速検索エンジン