phinajs / phina.js

phina.js is game library

Home Page:http://phinajs.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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だったら空文字列に
commented

@arairait san
おぉー, 素晴らしい! 一通り確認して反映しますb

細かいところばかりですみません。(^_^;)
こちらの対応が終わったらドキュメント追加をPRします。

commented

@arairait san
step なんですがデフォルト値を 1 にするのはどうでしょう?

step = step || 1;

@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;
    }
  }
}
commented

@arairait san すみません calculateAge あたりが衝突するかもですmm
Number#padding と String#format は修正しましたb

commented

step の件, なるほどです.
@arairait san のやり方で対応しますb

対応ありがとうございます!
calcurateAgeは、今のままだとどういう使い方になりますか?

あ、あとNumber#paddingの

if (str.indexOf("-") >= 0){ str = "-" + str.replace("-", ""); } // return の前にこの行を追加

はいかがでしょう? これがないと

(-12).padding(5); // => "00-12"

になるので。要らないですかねー?

commented

@arairait san
calcurateAge は, こんな感じで使います.
fd7d60f

ご指摘頂いた通りメンバメソッドである必要なかったですねw
static メソッドに変更しました!

commented

あ、あとNumber#paddingの
良いですねぇー, ありがとうございます!

反映しましたb
76037d3

commented

Array#range も修正しましたー 😄
97fe61b

これで一通り対応できた感じですかね?

対応ありがとうございます!
すみません、あと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);
  }
}

こんな感じでしょうか。これで全部です!

commented

なんと!
対応します!!

commented

@arairait san
すみません, お風呂入ってました💦
対応しましたーb

@phi-jp san
対応ありがとうございました!
これでまずcore系のドキュメントを完成させられそうです!

commented

@arairait san 夜遅くまですみません.
pull req 楽しみにしてます♪
って言っても @arairait san の コミットログすでに見てるんですけどねw