2011年12月13日火曜日

SimpleTimeKeeperにURLでタイマーの時間を指定出来る機能を追加してpull requestおくったった



SimpleTimeKeeperという便利なタイマーがあります。


SimpleTimeKeeper


シンプルで見やすくてとってもべんり。プレゼンの時に重宝します。


その、SimpleTimeKeeperに、タイマーの時間をURLで設定出来る機能を付け加えてみた。


URLの末尾に#10:20や?10:30や#10-20や#10m20sとつけるだけで設定出来るよ!


実装


location.searchかlocation.hashを数字ごとに区切って、前から3つとってくる感じになってます。


最後にreverseしてるのは、10:20みたいに、hours, minutes, secondsを全部指定してないときに都合がいいからです。



time = (location.search || location.hash).split(/[^0-9]/).filter(function (x) { return x !== ""; }).slice(0, 3).map(function (x) { return parseInt(x, 10); }).reverse();
// Set Timer
$('#hours').val(time[2] || 0);
$('#minutes').val(time[1] || 0);
$('#seconds').val(time[0] || 10);


まとめ




  • SimpleTimeKeeperはシンプルだから機能を追加するのもらくちん。

  • もっと追加したい機能があるけど、追加するにしても、なるべくシンプルにいきたい。

  • 僕はforEachやfilterやmap等、enumerateするメソッドを続けて書く事が好きだということに気づきました。


こないだもこんなの書いてたし。



urls = tweets.select{|t|
not t.attrs["entities"].empty?
}.select{|t|
t.attrs["entities"]["urls"]
}.map{|t|
t.attrs["entities"]["urls"].map{|u| u["expanded_url"]}
}.inject([]) {|result, urls|
result + urls
}.select{|u|
DB[:urls].where(:url => u).count.zero?
}.uniq





0 件のコメント:

コメントを投稿