azu on master
chore: add .nojekyll (compare)
azu on master
fix(promise-rance): fix typo f… (compare)
azu/promises-book@db96b8b
とりあえず、MochaとPromiseテストについて書いた。
コードではthen + catch 、テストではthenを使いましょうって方針
という感じの内容で書いてみた。
http://azu.github.io/promises-book/#_mocha_promises
サンプルとかイケてないから書き直す気がする。
もっと良いやり方もやっぱあるのかなー
then
で書くのはやっぱり、本質的なものじゃないのがテストに混ざるので、それ用の簡単なライブラリを書いてみた。
var shouldRejected = require("promise-test-helper").shouldRejected;
function mayBeRejected(){
return Promise.resolve();
}
it("should be failed", function () {
return shouldRejected(mayBeRejected()).catch(function (error) {
assert(error instanceof Error);
});
});
mayBeRejected()
をテストしたいときに、最初にrejectedか呼ばれることを期待するというのをshouldRejected(mayBeRejected())
という感じで書けるようにした感じ。
resolveされたらエラーにして、then
もあえて使う必要ない気がしたので、catch
以外だとエラーに落ちる感じにした。
azu/promises-book@55b647d
http://azu.github.io/promises-book/#control_tests
azu/promise-test-helper の簡単な実装を使った"意図したテストを書くには"を追加した。
FulfilledとonFulfilledみたいな用語が混在してたり、リズムがよくない…
azu/promises-book@33ac434 azu/promises-book@e79ad2c
リポジトリのテストの方もazu/promise-test-helperを使ったものに置き換えてみた。
行数自体は全体的に減った感じ。書き換えるときにreturn
のし忘れがやっぱりいちばんのハマり所な感じがした。
#6 Promiseのサブクラス作ってみようとしたけど、
native promiseのサブクラスは作れない感じなのかなー
http://speakingjs.com/es5/ch28.html
みたいにdelegateする感じしかないのかな。
Issues が循環参照起こしてきたので整理
Ch.2 に then
とcatch
のセクションを追加して、
以下のissueを処理する。
IE 9以下でcatch
がそのまま使えない問題って普通はどうやって対処してるんだろ?(Nodeとかでしかちゃんと使ってないから遭遇してない…)
Promiseを逐次処理するヘルパー のセクションを追加して、
以下のissueを処理する。
#46 sequenceな処理しようと思うと、Promise.allとかと違って、
promiseオブジェクトを返す関数の配列を渡すという感じになってしまうから、微妙に説明しにくい。
もしくは、題材を変えて Promise.any のような実装(Promise.race
は実はRejectedになったやつがあるとそこで終わってしまうので、若干罠っぽい)とかでもいいかもしれない。
これが処理できたら、残りは主に実行環境の話と序文ぐらいになるかな?
azu/promises-book#18 これどうするのがいいのか、若干悩んでる。
FirefoxとChromeはstableにネイティブPromise載ってるけど、全てのサンプルコードはそのまま<pre>
の中身で実行出来るわけじゃないから、自動的に付けるのが微妙に難しい。
この表記ゆれ辞書が気軽に使えるツール作るだけでも結構チェック出来る気がする。
最新版とか公開してないのかな。
plugableにその書籍毎の用語を追加していけば、色々使い道ありそうな気がするんだけどそういうツールって既にないのかな。
azu/promises-book@84b26b5
pull-requests時にそのコミットでのhtmlをプレビュー出来るようにしたくて
cat index.html | _tools/cli-rel-to-abs.js | _tools/cli-inject-meta.js > index-no-robots.html
という感じで単体の埋め込みHTMLを作れるようにしたけど、
HTMLを気軽にアップロード出来るサービスがない…
http://pasteht.ml/ が一番楽そうだったけど128KB制限にかかった…
各セクションの依存関係を適当に可視化してみた。
http://azu.github.io/visualize-promises-book/
何かもっと適切なグラフにしたい…
どういう意味があるのかは謎だけど…
ページにバグ報告ボタンを付けました(リリース時に外すか選択出来るようにしたほうがいいのかな)
選択してるテキストがデフォルトに入った状態でGithubにIssuesを立てるボタンです。
自分もガンガン立てて無言で処理していく感じがするので、細かい事気にしないでドンドン立てて行っていいと思います。
azu/promises-book@4468316 3章までひとまず文章を整えた。
ブラウザで確認 -> 間違いを修正 -> WebStormのFile Watchで編集毎にhtmlを更新 -> LiveReloadX でページを更新 -> 無限ループ
#18 azu/promises-book#18
これ、以下のように実行出来るサンプルを埋め込むように書き換えば、インタラクティブに実行できる本になりそう。
[.execute,source,js]
----
include::embed/embed-promise-all-xhr.js[]
// 実行例
main().then(function (value) {
console.log(value);
}).catch(function(error){
console.log(error);
});
----
実行出来るようにするのに、Codeblock.js使おうと思ってるけど、エディタがACEなのが難点(IMEが…)
後、ちゃんとやるならStuff.jsみたいなので実行Sandbox作ってやらないと行けないけど、
この辺の preコード -> 実行可能なエディタ とするいい感じのライブラリないかなー
やっと、サンプルコードを実行出来るエディタが入りました。 #18
結局エディタ+コンソール的な表示してくれるものいいのがなかったのでCodeMirrorベースで作りました…
http://azu.github.io/promises-book/
今のページだと全部に実行ボタンがついてて、かつサンプルコードと実行例を分けて書いてたので、
そのまま実行してもエラーになるだけという悲しい感じなので、 #122 で実行できるサンプルの分別と、
サンプルコードと実行例をくっつけてしまう感じにしていきます(文章も削ったりしないといけなさそう…)
[.execute,source,js]
----
include::embed/embed-promise-all-xhr.js[]
// 実行例 <= この部分
main().then(function (value) {
console.log(value);
}).catch(function(error){
console.log(error);
});
----
コメントで実行例(メイン?)とわかるようにしないと。