Module: TodoOrDie

Defined in:
lib/todo_or_die.rb,
lib/todo_or_die/version.rb,
lib/todo_or_die/overdue_error.rb

Overview

The namespace

Defined Under Namespace

Classes: OverdueTodo

Constant Summary collapse

DEFAULT_CONFIG =
{
  die: ->(message, due_at, condition) {
    error_message = [
      "TODO: \"#{message}\"",
      (" came due on #{due_at.strftime("%Y-%m-%d")}" if due_at),
      (" and" if due_at && condition),
      (" has met the conditions to be acted upon" if condition),
      ". Do it!"
    ].compact.join("")

    if defined?(Rails) && Rails.env.production?
      Rails.logger.warn(error_message)
    else
      raise TodoOrDie::OverdueTodo, error_message, TodoOrDie.__clean_backtrace(caller)
    end
  },

  warn: lambda { |message, due_at, warn_at, condition|
    error_message = [
      "TODO: \"#{message}\"",
      (" is due on #{due_at.strftime("%Y-%m-%d")}" if due_at),
      (" and" if warn_at && condition),
      (" has met the conditions to be acted upon" if condition),
      ". Don't forget!"
    ].compact.join("")

    puts error_message

    Rails.logger.warn(error_message) if defined?(Rails)
  }
}.freeze
FILE_PATH_REGEX =
Regexp.new(Regexp.quote(__dir__)).freeze
VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.__clean_backtrace(stack) ⇒ Object



49
50
51
# File 'lib/todo_or_die.rb', line 49

def self.__clean_backtrace(stack)
  stack.delete_if { |line| line =~ FILE_PATH_REGEX }
end

.config(options = {}) ⇒ Object



39
40
41
42
# File 'lib/todo_or_die.rb', line 39

def self.config(options = {})
  @config ||= reset
  @config.merge!(options)
end

.resetObject



44
45
46
# File 'lib/todo_or_die.rb', line 44

def self.reset
  @config = DEFAULT_CONFIG.dup
end