javascriptの俺俺ライブラリ作り始めました
いつまで続くか分からないけど、作ってみました。
名前は面倒だったから適当に付けただけです。
MonadとかFunctorとかが沢山あるあのライブラリとは関係ありません。
主にはprototype周りを中心に拡張していって行くつもりです。
その他基底になるオブジェクトも多分書いていきます。
サンプル
"0123".toInt() // 123 "0123".toIntOrZero() // 123 "NaN".toIntOrZero() // 0 "{0} is {1}".format("cat", "cut") // cat is cute "0123.45".toHalfNumber() // 123.45 "qwrty".toHalfAlphabet() // qwrty var f = (function(a,b,c,d){ return a + b + c + d; }).curried(); // f(1)(2)(3)(4); (new Date(2013, 0, 1)).dateDiff("month", new Date(2014, 2, 1)); // 12
と、全角文字を半角にしてくれる入力補助に使うようなものから、日付計算メソッドだったりカリー化とか、まぁなんか統一感と対称性や網羅性がない感じです。
一応
"test Function.prototype.andThen" : function() { var f = function(a) { return a + 10; }; var g = function(a) { return a * 2; }; var target = f.andThen(g); var actual = target(1); assertEquals(22, actual); }
みたいな感じでテストコードは一応書いてあります。jsTestDriverです。
作り始めのきっかけは、jQueryだけだとDOM周りはいいんだけど計算とかなんかもろもろやるのにちょっと痒いところに手が届かないんだよなぁ。
かといって色々乱立しすぎてて、。
と思いちょこちょこ書いてたのが元です。
加毒性が高いコードとか、とりあえずやってみたかっただけー的なコードや、「ナンデそんな書き方してんの?(#^ω^)」的な物はありますが、まぁいつか直そうかなぁと。
必要に応じて適当に書いたコードを組み込んでいく形で修正しようと思いますが、何が問題だったのかよく考えずに見つけた物から書いていってるので、もし使ってくれる方がいらっしゃいましたら、言っていただければ実装したいと思います。