wataメモ

日々のメモをつらつらと書くだけ

[5][JavaScript]Sugarを使ってみる

 JavaScriptで日付を操作する時に、素のJavaScriptAPIだと色々面倒、不便だなぁと感じる事が多かった。前はDate.jsを使っていたが、最近は更新されていないっぽいので、今は何があるのかとGoogleの期間指定検索で1年以内を指定して見つかったSugarを触ってみた。

 SugarはNativeオブジェクトに便利な関数群を追加してくれるライブラリ。対象はDateオブジェクトだけでなくString、Number、Object、Function、RegExpのオブジェクトに便利関数を足してくれている。ちょっと特徴的だったのは日本語の日付(例えば「1776年07月04日」等)をパース出来る所。あまり使う時は無いとは思うが・・・。

 とりあえずDateでよく使いそうなのは以下。

  1. Date.create(引数に日付文字列を渡せばパースしてくれる)、Date.now
  2. addUnits(UnitsはSeconds、Minutes等単位分ある。引き算はマイナス値を足す)
  3. format(Date.create.format('{hh}:{mm}');等フォーマット指定で文字列化)

 日付操作目的で探したが、他にも色々便利になりそう。ぱっと見た感じで使えそうなのを上げてみる。

 Stringオブジェクト

  1. assign(メッセージフォーマットにバインドできる。'Hello Mr. {name}'.assign({name: 'wata'}))
  2. camelize(_や-で連結されている文字列をキャメル式に変換。第1引数で最初の文字を変化するかどうか指定できる。'caps_lock'.camelize() -> 'CapsLock'、'moz-border-radius'.camelize(false) -> 'mozBorderRadius')
  3. compact(複数の空白、改行を1つにして、最後をトリムする。'too \n much \n space'.compact() -> 'too much space')
  4. dasherize(camelizeの-連結変換版。'capsLock'.dasherize() -> 'caps-lock')
  5. decodeBase64encodeBase64(base64変換。)
 あまり使わないだろうけど、ひらがな、カタカナがあるかどうかのhasHiragana、hasKatakanaや半角全角変換のhankakuzenkakuや、英語の単数形、複数形の相互変換等、面白い関数もある。

 NumberオブジェクトはMathにある関数を移植した感じなので割愛。

 Arrayオブジェクトも似たようなのがjQueryにすでにあったりするが以下はいいかも。(zipはJavaScriptでグラフとかを描くときのデータ作成に使えそう。)

  1. unique(配列の中身をユニークにする。)
  2. zip(複数の配列を同じ添字番号の同じ要素を配列に組み直して、すべてを1つの配列にする。[1,2,3].zip([4,5,6])-> [[1,4],[2,5],[3,6]])

 Functionオブジェクトは確かに便利そうな関数があるが、あまり乱用すると書いた人以外が分かりづらくなりそう。シンタックスシュガー的な使い方をすれば・・・いや、やはり他人とソースを共有する時は使わないほうがいいだろう。

 RegExpオブジェクト

  1. RegExp.escape(正規表現に使われる記号(「?」、「.」「(」、「)」等)をエスケープする。)

 上記ぐらいを知っておけば、Sugarを使うとなったときは問題なさそう。jQueryも意識してくれているらしいので、競合しないところも安心材料ではある。これは常用ライブラリとして使っても良い感じ。しかし、色々な国の言語を意識したライブラリは稀なので、いったいどこの誰が作ったのか気になる。