core系もろもろ
arairait opened this issue · comments
ドキュメント作成の中で、いくつか更新した方がよさそうな箇所があったので報告します。
修正案がOKでしたらPRします。
Array#range
stepに0を指定した場合などに無限ループになります。
for (var i=start, index=0; i<end; i+=step, ++index) {
this[index] = i;
}
上記のブロックを if (step > 0)
で囲う必要があるかと。(もう1箇所も同様)
Date#calculateAge
インスタンスメソッドであれば引数はbirthdayのみでよく、引数whenは不要ではないでしょうか?
(new Date()).calculateAge("1990-01-17"); // => 26
Number#padding
ch に長さ2以上の文字列を指定してもそのまま結合しますが、「桁数を揃える」という目的を考えると、
文字列の先頭文字をパディング文字として使用する、という仕様がよいと思います。
また、負の値の場合にマイナス記号が左端に来ないのも修正したいところです。
ch = ch[0] || '0'; // [0] を追加
while(n-- > 0) { str = ch + str; }
if (str.indexOf("-") >= 0){ str = "-" + str.replace("-", ""); } // return の前にこの行を追加
return str;
Number#step
Array#rangeと同じです。
String#format
指定した引数がないと "undefined" が入ってしまいます。
rep_fn = function(m, k) { return args[ parseInt(k) ] || ''; }; // undefinedだったら空文字列に
細かいところばかりですみません。(^_^;)
こちらの対応が終わったらドキュメント追加をPRします。
@phi-jp san
stepのデフォルト値を1にするのは完全に同意です。
ただそれだけだと arr.range(2, 14, -1)
などのときに無限ループになるのでやはり step の正負チェックは必要かなと。
else if (start < end){
step = step || 1;
if (step > 0) {
for (var i=start, index=0; i<end; i+=step, ++index) {
this[index] = i;
}
}
}
else {
step = step || -1;
if (step < 0) {
for (var i=start, index=0; i>end; i+=step, ++index) {
this[index] = i;
}
}
}
@arairait san すみません calculateAge あたりが衝突するかもですmm
Number#padding と String#format は修正しましたb
対応ありがとうございます!
calcurateAgeは、今のままだとどういう使い方になりますか?
あ、あとNumber#paddingの
if (str.indexOf("-") >= 0){ str = "-" + str.replace("-", ""); } // return の前にこの行を追加
はいかがでしょう? これがないと
(-12).padding(5); // => "00-12"
になるので。要らないですかねー?
対応ありがとうございます!
すみません、あと1つ…(^^;)
Number#range も無限ループ問題があるので修正いただけますか?
for (var i=+this; i<=limit; i+=step) {
fn.call(self, i, this);
}
↓
if (this < limit && step > 0 || this > limit && step < 0) {
for (var i=+this; i<=limit; i+=step) {
fn.call(self, i, this);
}
}
こんな感じでしょうか。これで全部です!
なんと!
対応します!!
@phi-jp san
対応ありがとうございました!
これでまずcore系のドキュメントを完成させられそうです!