Class: Ruboty::Handlers::Kintai
- Inherits:
-
Base
- Object
- Base
- Ruboty::Handlers::Kintai
- Defined in:
- lib/ruboty/handlers/kintai.rb
Constant Summary collapse
- NAMESPACE =
'kintai'
Instance Method Summary collapse
- #go_home(message) ⇒ Object
- #go_work(message) ⇒ Object
-
#kintai(now = Time.now) ⇒ Object
こんな感じ { ‘2014-01-02’: { ‘blockgiven’: { go_home_at: Time.now, go_work_at: Time.now } } }.
- #kintai_range(start_at, end_at) ⇒ Object
- #list(message) ⇒ Object
- #reporter_for(message) ⇒ Object
- #work_time(time, name) ⇒ Object
Instance Method Details
#go_home(message) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/ruboty/handlers/kintai.rb', line 27 def go_home() go_home_at = Time.parse(([:go_home_at] || Time.now).to_s) kintai[.from_name] ||= {} kintai[.from_name][:go_home_at] = go_home_at greedings = %w(おつかれさま おつかれさん 乙 はなきんだー バイバイ!) if work_time = work_time(go_home_at, .from_name) stats = "今日は#{work_time}働いたみたいだよ。お疲れ様でした。" else stats = %w(あれ、いつきたのかな? 日付かわっちゃったかな? あ、帰る前に何時にきたか教えて!).sample end .reply("#{greedings.sample}, #{.from_name}. #{stats}.") rescue => e if /no time information in/ =~ e. .reply('時間がわからへん') else .reply(e.) end end |
#go_work(message) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/ruboty/handlers/kintai.rb', line 10 def go_work() go_work_at = Time.parse(([:go_work_at] || Time.now).to_s) kintai[.from_name] ||= {} kintai[.from_name][:go_work_at] = go_work_at greedings = %w(おはよー はよ はよはよ やっほー ふゎあぁ、おはよ ...) .reply("#{greedings.sample}, #{.from_name}.") rescue => e if /no time information in/ =~ e. .reply('時間がわからへん') else .reply(e.) end end |
#kintai(now = Time.now) ⇒ Object
こんな感じ {
'2014-01-02': {
'blockgiven': {
go_home_at: Time.now,
go_work_at: Time.now
}
}
}
70 71 72 73 |
# File 'lib/ruboty/handlers/kintai.rb', line 70 def kintai(now = Time.now) robot.brain.data[NAMESPACE] ||= {} robot.brain.data[NAMESPACE][now.strftime("%Y-%m-%d")] ||= {} end |
#kintai_range(start_at, end_at) ⇒ Object
75 76 77 78 79 80 81 82 83 |
# File 'lib/ruboty/handlers/kintai.rb', line 75 def kintai_range(start_at, end_at) Enumerator.new {|y| time = start_at while time < end_at.end_of_day do y << [time.beginning_of_day, kintai(time)] time = time.tomorrow end } end |
#list(message) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/ruboty/handlers/kintai.rb', line 49 def list() start_at = [:start].tr('0-9', '0-9').gsub(/ヶ月|ケ月|か月|ヵ月|カ月/, '月') start_at = (Tokiyomi.parse(start_at) rescue Time.parse(start_at)) end_at = [:end].tr('0-9', '0-9').gsub(/ヶ月|ケ月|か月|ヵ月|カ月/, '月') end_at = (Tokiyomi.parse(end_at) rescue Time.parse(end_at)) reporter = reporter_for() .reply(reporter.new(kintai_range(start_at, end_at)).report) rescue => e .reply("ごめんな、勤怠わからへん: #{e.}@#{e.backtrace.take(5).join($/)}") end |
#reporter_for(message) ⇒ Object
94 95 96 97 98 99 100 101 |
# File 'lib/ruboty/handlers/kintai.rb', line 94 def reporter_for() case [:reporter] when /csv/i Ruboty::Kintai::Reporters::Csv else raise 'csv以外は出力できへん' end end |
#work_time(time, name) ⇒ Object
85 86 87 88 89 90 91 92 |
# File 'lib/ruboty/handlers/kintai.rb', line 85 def work_time(time, name) go_work_at = kintai(time).fetch(name, {})[:go_work_at] go_home_at = kintai(time).fetch(name, {})[:go_home_at] if go_work_at and go_home_at Time.at(go_home_at - go_work_at - 9.hours).strftime("%H:%M") # FIXME end end |