[5][JavaScript]Sugarを使ってみる
JavaScriptで日付を操作する時に、素のJavaScriptのAPIだと色々面倒、不便だなぁと感じる事が多かった。前はDate.jsを使っていたが、最近は更新されていないっぽいので、今は何があるのかとGoogleの期間指定検索で1年以内を指定して見つかったSugarを触ってみた。
SugarはNativeオブジェクトに便利な関数群を追加してくれるライブラリ。対象はDateオブジェクトだけでなくString、Number、Object、Function、RegExpのオブジェクトに便利関数を足してくれている。ちょっと特徴的だったのは日本語の日付(例えば「1776年07月04日」等)をパース出来る所。あまり使う時は無いとは思うが・・・。
とりあえずDateでよく使いそうなのは以下。
- Date.create(引数に日付文字列を渡せばパースしてくれる)、Date.now
- addUnits(UnitsはSeconds、Minutes等単位分ある。引き算はマイナス値を足す)
- format(Date.create.format('{hh}:{mm}');等フォーマット指定で文字列化)
日付操作目的で探したが、他にも色々便利になりそう。ぱっと見た感じで使えそうなのを上げてみる。
Stringオブジェクト
- assign(メッセージフォーマットにバインドできる。'Hello Mr. {name}'.assign({name: 'wata'}))
- camelize(_や-で連結されている文字列をキャメル式に変換。第1引数で最初の文字を変化するかどうか指定できる。'caps_lock'.camelize() -> 'CapsLock'、'moz-border-radius'.camelize(false) -> 'mozBorderRadius')
- compact(複数の空白、改行を1つにして、最後をトリムする。'too \n much \n space'.compact() -> 'too much space')
- dasherize(camelizeの-連結変換版。'capsLock'.dasherize() -> 'caps-lock')
- decodeBase64、encodeBase64(base64変換。)
NumberオブジェクトはMathにある関数を移植した感じなので割愛。
Arrayオブジェクトも似たようなのがjQueryにすでにあったりするが以下はいいかも。(zipはJavaScriptでグラフとかを描くときのデータ作成に使えそう。)
- unique(配列の中身をユニークにする。)
- zip(複数の配列を同じ添字番号の同じ要素を配列に組み直して、すべてを1つの配列にする。[1,2,3].zip([4,5,6])-> [[1,4],[2,5],[3,6]])
Functionオブジェクトは確かに便利そうな関数があるが、あまり乱用すると書いた人以外が分かりづらくなりそう。シンタックスシュガー的な使い方をすれば・・・いや、やはり他人とソースを共有する時は使わないほうがいいだろう。
RegExpオブジェクト
- RegExp.escape(正規表現に使われる記号(「?」、「.」「(」、「)」等)をエスケープする。)
上記ぐらいを知っておけば、Sugarを使うとなったときは問題なさそう。jQueryも意識してくれているらしいので、競合しないところも安心材料ではある。これは常用ライブラリとして使っても良い感じ。しかし、色々な国の言語を意識したライブラリは稀なので、いったいどこの誰が作ったのか気になる。