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

SimpleTimeKeeperという便利なタイマーがあります。
fluxflex.com
シンプルで見やすくてとってもべんり。プレゼンの時に重宝します。
その、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