class

Config::SleepSchedule

Inherits JSON::Serializable < Reference < Object

睡眠時の停止のスケジュール(issue #54)。

時刻は "HH:MM" の 24 時間表記で、ローカル時刻として読む。 開始が終了より後なら日を跨ぐ範囲とする。23:00 から 07:00 のような寝る時間帯を 1 つで書くためである。

Constructors

new(*, __pull_for_json_serializable pull : JSON::PullParser)
Source

Class methods

parse_minutes(text : String) : Int32 | Nil

"HH:MM" を 0 時からの分へ読み替える。形式に合わなければ nil を返す。

主ループの 1 拍ごとに呼ばれるため、正規表現を使わずに文字を直に見る。

Source

Instance methods

active?(time : Time) : Bool

time がスケジュールの範囲に入っているか。

範囲は開始時刻を含み、終了時刻を含まない。 無効なとき、時刻を読めないとき、開始と終了が同じときは、どの時刻も範囲に入らない。 読めない時刻や同じ時刻は検証で弾いているが、手で書き換えた設定を読み直すまでの間に備える。

Source
enabled
Source
enabled=(enabled : Bool)
Source
end_time
Source
end_time=(end_time : String)
Source
next_end(time : Time) : Time | Nil

time より後で最初に来る終了時刻。終了時刻を読めなければ nil を返す。

範囲に入っているときは、その範囲が終わる時刻になる。 手動のおやすみモードの期限と、起きた後に止めない期間の終わりに使う。 日付は暦で 1 日進める。夏時間の切り替えがある地域で、24 時間足すと時刻がずれるためである。

Source
start_time

end は Crystal の予約語であり、そのままでは名前にできない。 対になる start も揃えて、キー名を明示した別名で持つ。

Source
start_time=(start_time : String)

end は Crystal の予約語であり、そのままでは名前にできない。 対になる start も揃えて、キー名を明示した別名で持つ。

Source