module Tot::Utils
Public Class Methods
datetime_filter(buf)
click to toggle source
# File lib/tot.rb, line 122 def datetime_filter(buf) #{{{ today = DateTime.now ret = nil case buf when /^(今日)/ ret = today when /^(明日|あした|あす)/ ret = today + 1 when /^(明後日|あさって)/ ret = today + 2 when /^しあさって/ ret = today + 3 when /^(日|月|火|水|木|金|土)曜(日)?/ # 次の○曜日 date_offset = ([ '日', '月', '火', '水', '木', '金', '土' ].index($1) - today.wday + 7) % 7 date_offset += 7 if date_offset == 0 ret = today + date_offset when /^([0-9]+\/[0-9]+\/[0-9]+)/# yyyy/mm/dd ret = DateTime.parse($1) when /^([0-9]+\/[0-9]+)/# mm/dd date = DateTime.parse($1) # 過去の日付だったら来年にする while date < today date = date >> 12 end ret = date when /^([0-9]+)/# mmddd datestr = $1 case datestr.length when 2 # 12 => 1/2 datestr = datestr.slice(0..0) + "/" + datestr.slice(1..1) when 3 # 123 => 1/23 ※ 12/3 の可能性もあるけどそうはしない datestr = datestr.slice(0..0) + "/" + datestr.slice(1..2) when 4 # 1230 => 12/30 datestr = datestr.slice(0..1) + "/" + datestr.slice(2..3) else raise ArgumentError , "不正な値です" end date = DateTime.parse(datestr) # 過去の日付だったら来年にする while date < today date = date >> 12 end ret = date end ret end
stdin_incoming?()
click to toggle source
# File lib/tot.rb, line 189 def stdin_incoming? #{{{ (File.pipe?(STDIN) || File.select([STDIN], [], [], 0) != nil) end
time_filter(buf)
click to toggle source
# File lib/tot.rb, line 173 def time_filter(buf) #{{{ ret = [] case buf when /(\d+):(\d+)/, /(\d+)時(\d+)分/, /(\d+)じ(\d+)ふん/ ret[0] = $1.to_i ret[1] = $2.to_i when /(\d+)時/ ret[0] = $1.to_i ret[1] = 0 default ret[0] = 0 ret[1] = 0 end ret end
Private Instance Methods
datetime_filter(buf)
click to toggle source
# File lib/tot.rb, line 122 def datetime_filter(buf) #{{{ today = DateTime.now ret = nil case buf when /^(今日)/ ret = today when /^(明日|あした|あす)/ ret = today + 1 when /^(明後日|あさって)/ ret = today + 2 when /^しあさって/ ret = today + 3 when /^(日|月|火|水|木|金|土)曜(日)?/ # 次の○曜日 date_offset = ([ '日', '月', '火', '水', '木', '金', '土' ].index($1) - today.wday + 7) % 7 date_offset += 7 if date_offset == 0 ret = today + date_offset when /^([0-9]+\/[0-9]+\/[0-9]+)/# yyyy/mm/dd ret = DateTime.parse($1) when /^([0-9]+\/[0-9]+)/# mm/dd date = DateTime.parse($1) # 過去の日付だったら来年にする while date < today date = date >> 12 end ret = date when /^([0-9]+)/# mmddd datestr = $1 case datestr.length when 2 # 12 => 1/2 datestr = datestr.slice(0..0) + "/" + datestr.slice(1..1) when 3 # 123 => 1/23 ※ 12/3 の可能性もあるけどそうはしない datestr = datestr.slice(0..0) + "/" + datestr.slice(1..2) when 4 # 1230 => 12/30 datestr = datestr.slice(0..1) + "/" + datestr.slice(2..3) else raise ArgumentError , "不正な値です" end date = DateTime.parse(datestr) # 過去の日付だったら来年にする while date < today date = date >> 12 end ret = date end ret end
stdin_incoming?()
click to toggle source
# File lib/tot.rb, line 189 def stdin_incoming? #{{{ (File.pipe?(STDIN) || File.select([STDIN], [], [], 0) != nil) end
time_filter(buf)
click to toggle source
# File lib/tot.rb, line 173 def time_filter(buf) #{{{ ret = [] case buf when /(\d+):(\d+)/, /(\d+)時(\d+)分/, /(\d+)じ(\d+)ふん/ ret[0] = $1.to_i ret[1] = $2.to_i when /(\d+)時/ ret[0] = $1.to_i ret[1] = 0 default ret[0] = 0 ret[1] = 0 end ret end