module JekyllReadingTime

Public Instance Methods

reading_time(input) click to toggle source
# File lib/jekyll-reading-time.rb, line 14
def reading_time(input)
  # Get words count
  total_words = get_plain_text(input).split.size

  # Load configuration
  config = @context.registers[:site].config["reading_time"]

  # Setup default value
  if ! config
    second_plural = "seconds"
    minute_singular = "minute"
    minute_plural = "minutes"
  else
    second_plural = config["second_plural"] ? config["second_plural"] : "seconds"
    minute_singular = config["minute_singular"] ? config["minute_singular"] : "minute"
    minute_plural = config["minute_plural"] ? config["minute_plural"] : "minutes"
  end

  # Calculate reading time
  case total_words
    when 0 .. 89
      return "30 #{second_plural}"
    when 90 .. 269
      return "1 #{minute_singular}"
    when 230 .. 449
      return "2 #{minute_plural}"
    when 450 .. 629
      return "3 #{minute_plural}"
    when 630 .. 809
      return "4 #{minute_plural}"
    when 810 .. 990
      return "5 #{minute_plural}"
    else
      minutes = ( total_words / WORDS_PER_MINUTE ).floor
      return "#{minutes} #{minute_plural}";
  end
end