Class: Sekki24::Zassetsu

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/sekki24/zassetsu.rb

Constant Summary collapse

ATTRIBUTES =
%i[key name_ja reading category date end_date time longitude].freeze

Instance Method Summary collapse

Constructor Details

#initialize(key:, name_ja:, reading:, category:, date:, end_date: date, time: nil, longitude: nil) ⇒ Zassetsu

Returns a new instance of Zassetsu.



11
12
13
14
15
16
17
18
19
20
21
# File 'lib/sekki24/zassetsu.rb', line 11

def initialize(key:, name_ja:, reading:, category:, date:, end_date: date, time: nil, longitude: nil)
  @key = key
  @name_ja = name_ja
  @reading = reading
  @category = category
  @date = date.freeze
  @end_date = end_date.freeze
  @time = time&.dup&.freeze
  @longitude = longitude
  freeze
end

Instance Method Details

#<=>(other) ⇒ Object



23
24
25
26
27
# File 'lib/sekki24/zassetsu.rb', line 23

def <=>(other)
  return unless other.respond_to?(:date)

  sort_key <=> other.sort_key
end

#include?(value) ⇒ Boolean

Returns:

  • (Boolean)


29
30
31
32
# File 'lib/sekki24/zassetsu.rb', line 29

def include?(value)
  target = value.is_a?(Time) ? value.to_date : value
  (date..end_date).cover?(target)
end

#inspectObject



38
39
40
41
# File 'lib/sekki24/zassetsu.rb', line 38

def inspect
  suffix = date == end_date ? date.iso8601 : "#{date.iso8601}..#{end_date.iso8601}"
  "#<#{self.class} #{name_ja} (#{key}) #{suffix}>"
end

#to_hObject



34
35
36
# File 'lib/sekki24/zassetsu.rb', line 34

def to_h
  ATTRIBUTES.to_h { |attribute| [attribute, public_send(attribute)] }
end