Module: Perron::Resource::ReadingTime

Extended by:
ActiveSupport::Concern
Included in:
Perron::Resource
Defined in:
lib/perron/resource/reading_time.rb

Instance Method Summary collapse

Instance Method Details

#estimated_reading_time(wpm: DEFAULT_WORDS_PER_MINUTE, format: DEFAULT_FORMAT) ⇒ Object Also known as: reading_time



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/perron/resource/reading_time.rb', line 8

def estimated_reading_time(wpm: DEFAULT_WORDS_PER_MINUTE, format: DEFAULT_FORMAT)
  word_count = content.scan(/\b[a-zA-Z]+\b/).size
  total_minutes = [(word_count.to_f / wpm).ceil, 1].max

  hours = total_minutes / 60
  minutes = total_minutes % 60
  seconds = ((word_count.to_f / wpm) * 60).to_i % 60

  return total_minutes if format.blank?

  format % {
    minutes: minutes,
    total_minutes: total_minutes,
    hours: hours,
    seconds: seconds,
    min: minutes,
    h: hours,
    s: seconds
  }
end