class Peacock::Engine::Extractor

Public Class Methods

new(opt_hash) click to toggle source
# File lib/peacock/engine/extractor.rb, line 13
def initialize(opt_hash)
  @hash = check_and_return_hash(opt_hash)
  @logger = Peacock::Logger.new(@hash.silent?)
  path = determine_git_ignore_path
  git_ignore_exists?(path)

  # open in mode read-write (beginning of file)
  @git_ignore = File.open(path, 'r')
end
start_engine(opt_hash) click to toggle source
# File lib/peacock/engine/extractor.rb, line 8
def self.start_engine(opt_hash)
  extractor = Extractor.new(opt_hash)
  extractor.workflow
end

Public Instance Methods

determine_delete_list(ignore_lines, delete_list) click to toggle source
# File lib/peacock/engine/extractor.rb, line 47
def determine_delete_list(ignore_lines, delete_list)
  ignore_lines.each_with_index do |line,index|
    if hash_includes_line?(line)
      delete_list.push(index)
      @logger.extract(line.chomp("\n"))
    end
  end
end
extract_files_and_directories() click to toggle source
# File lib/peacock/engine/extractor.rb, line 28
def extract_files_and_directories
  delete_list = []
  ignore_lines = @git_ignore.readlines
  
  # determine delete_list (cant use delete_if cause of logger logic)
  determine_delete_list(ignore_lines, delete_list)
  
  delete_list.each do |entry|
    ignore_lines.delete_at(entry)
  end
     
  # reopen in writable mode and input all new git ignore entries
  @git_ignore.reopen(@git_ignore.path, 'w')

  ignore_lines.each do |line|
    @git_ignore.write(line)
  end
end
hash_includes_line?(line) click to toggle source
# File lib/peacock/engine/extractor.rb, line 56
def hash_includes_line?(line)
  @hash.dirs.include?(line.chomp("\n")) || @hash.files.include?(line.chomp("\n"))
end
workflow() click to toggle source
# File lib/peacock/engine/extractor.rb, line 23
def workflow
  extract_files_and_directories
  @git_ignore.close
end