class Todos

Todos

Public Instance Methods

all_todos(root_directory = " click to toggle source
# File lib/totrello/todos.rb, line 3
def all_todos(root_directory = "#{Dir.pwd}", config)
  files = load_files(root_directory, config)
  files.map {|f| todos_for_file(f, config) }.flatten
end
clean_todo(todo, config) click to toggle source
# File lib/totrello/todos.rb, line 53
def clean_todo(todo, config)
  config.todo_types.each do |style|
    todo.delete!(style)
  end
  config.comment_style.each do |style|
    todo.delete!(style)
  end
  todo.delete!('#')
  todo.delete!(':')
  todo.chomp!
  todo.lstrip!
end
lines_with_index_for_file(file) click to toggle source
# File lib/totrello/todos.rb, line 34
def lines_with_index_for_file(file)
  lines = File.readlines file.to_s
  lines.map.with_index do |line, idx|
    { line: line, index: idx }
  end
end
load_files(root_directory = " click to toggle source
# File lib/totrello/todos.rb, line 8
def load_files(root_directory = "#{Dir.pwd}", config)
  Dir.glob("#{root_directory}/**/*").select do |f|
    next if File.directory?(f) || config.excludes.include?(f)
    split_file_name = f.split('.')
    File.file?(f) &&
      config.file_types.include?(".#{split_file_name.last}")
  end
end
todo?(line, config) click to toggle source
# File lib/totrello/todos.rb, line 41
def todo?(line, config)
  return false if line.empty?
  todo_types = config.todo_types
  todo_types.any? do |todo_type|
    return false if line.index(todo_type).nil?
    return false unless config.comment_style.any? do |cs|
      line.strip.start_with?(cs)
    end
    true
  end
end
todos_for_file(file, config) click to toggle source
# File lib/totrello/todos.rb, line 17
def todos_for_file(file, config)
  lines_with_indexes = lines_with_index_for_file(file)
  lines_with_indexes.reduce([]) do |todos, line|
    if todo?(line[:line], config)
      cleaned_todo = clean_todo(line[:line], config)
      unless cleaned_todo.nil?
        todos.push({
                     todo: cleaned_todo,
                     line_number: line[:index],
                     file: file.to_s
                   })
      end
    end
    todos
  end
end