cre-ne-jp/log-archiver

View on GitHub
app/models/hour_separator.rb

Summary

Maintainability
A
0 mins
Test Coverage
# ็”Ÿใƒญใ‚ฐใฎ 1 ๆ™‚้–“ใ”ใจใฎๅŒบๅˆ‡ใ‚Šใฎใƒขใƒ‡ใƒซ
class HourSeparator
attr_reader :timestamp
 
# 1 ๆ™‚้–“ใ”ใจใฎๅŒบๅˆ‡ใ‚Šใ‚’ๅˆๆœŸๅŒ–ใ™ใ‚‹
# @param [Date] date ๆ—ฅไป˜
# @param [Integer] hour ๆ™‚
# @raise [ArgumentError] hour ใŒ 0ใ€œ23 ใฎๆ•ดๆ•ฐใงใชใ„ๅ ดๅˆ
def initialize(date, hour)
unless hour.kind_of?(Integer) && (0...24).include?(hour)
raise ArgumentError, "invalid hour: #{hour}"
end
 
@timestamp = Time.zone.local(date.year, date.month, date.day, hour)
end
 
# HTML ใฎใƒ•ใƒฉใ‚ฐใƒกใƒณใƒˆ่ญ˜ๅˆฅๅญใ‚’่ฟ”ใ™
# @return [String]
def fragment_id
@timestamp.strftime('%H%M%S')
end
 
# 1 ๆ—ฅๅˆ†ใฎใƒญใ‚ฐใง่กจ็คบใ™ใ‚‹ๅˆ†ใฎๅŒบๅˆ‡ใ‚Šใ‚’่ฟ”ใ™
#
# ็พๅœจๆ™‚ๅˆปใ‚ˆใ‚Šๅ‰ใฎใ‚‚ใฎใ ใ‘่ฟ”ใ™ใ€‚
#
# @param [Date] date ๆ—ฅไป˜
# @return [Array<HourSeparator>] ๆŒ‡ๅฎšใ—ใŸๆ—ฅไป˜ใฎ 1 ๆ™‚้–“ใ”ใจใฎๅŒบๅˆ‡ใ‚Šใฎ้…ๅˆ—
def self.for_day_browse(date)
(0...24).
map { |hour| new(date, hour) }.
select { |separator| separator.timestamp < Time.current }
end
end