From 8577dc9d458c255f74831fedd35813091449a138 Mon Sep 17 00:00:00 2001 From: suVene Date: Mon, 22 Dec 2008 12:06:29 +0000 Subject: add $U.runnable(generator) git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@27232 d0d07461-0603-4401-acd4-de1884942a52 --- _libly.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to '_libly.js') diff --git a/_libly.js b/_libly.js index f3c4dd3..abb846a 100644 --- a/_libly.js +++ b/_libly.js @@ -5,7 +5,7 @@ var PLUGIN_INFO = Vimperator plugins library? 適当なライブラリっぽいものたち。 suVene - 0.1.13 + 0.1.14 1.2 2.0pre http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk/_libly.js @@ -47,6 +47,8 @@ evalJson(str, toRemove): dateFormat(dtm, fmt): Date型インスタンスを、指定されたフォーマットで文字列に変換します。 fmt を省略した場合、"%y/%M/%d %h:%m:%s" となります。 +runnable(generator): + gererator を実行し、再帰的に resume する為の引数を渡します。 == Browser == getSelectedString: @@ -181,6 +183,22 @@ libly.$U = {//{{{ } return (fmt || '%y/%M/%d %h:%m:%s').replace(/%([yMdhms%])/g, function (_, n) d[n]); }, + /** + * example) + * $U.runnable(function(resume) { + * // execute asynchronous function. + * // goto next yield; + * var val = yield setTimeout(function() { resume('value!'), 1000) }); + * alert(val); // value! + * yield; + * }); + */ + runnable: function(generator) { + var it = generator(function(value) { + try { it.send(value); } catch (e) {} + }); + it.next(); + }, // }}} // Browser {{{ getSelectedString: function() { -- cgit v1.2.3