class DisavowTool::List

Public Class Methods

new(import_files) click to toggle source
# File lib/disavow_tool/list.rb, line 10
def initialize(import_files)
  @list = Set.new
  @list_files_imported = []
  @verbose = OPTIONS.verbose
  @verbose_hard = OPTIONS.hardcore_verbose
  import import_files
  @original_list = @list.clone
end

Public Instance Methods

add_domain(domain, list=nil) click to toggle source
# File lib/disavow_tool/list.rb, line 39
def add_domain(domain, list=nil)
  list = list || @list
  if list.add? domain
    color_domain = domain.on_yellow
    puts add_url_message(color_domain).blue if @verbose
  else
    puts "Not adding #{domain}. Already in the list.".red if @verbose
  end
end
add_url(url, list=nil) click to toggle source
# File lib/disavow_tool/list.rb, line 49
def add_url(url, list=nil)
  list = list || @list
  if list.add? url
    puts add_url_message(url).blue if @verbose
  else
    puts "Not adding #{url}. Already in the list.".red if @verbose
  end
end
clean_line!() click to toggle source
# File lib/disavow_tool/list.rb, line 8
def clean_line!; raise "SubclassResponsibility" ; end
comment?(line) click to toggle source
# File lib/disavow_tool/list.rb, line 131
def comment?(line)
  line.match(/^#/) ? true : false
end
count() click to toggle source
# File lib/disavow_tool/list.rb, line 145
def count
  @list.count
end
delete_url(url, options={verbose:true}) click to toggle source
# File lib/disavow_tool/list.rb, line 58
def delete_url(url, options={verbose:true})
  if @list.delete? url
    color_url = url.on_yellow
    puts delete_url_message(color_url).red if (@verbose && options[:verbose])
  else
    puts "Not removing #{url}. It wasn't on the list.".red if (@verbose && options[:verbose])
  end
end
delete_urls_if_domains(domains) click to toggle source
# File lib/disavow_tool/list.rb, line 77
def delete_urls_if_domains(domains)
  domains = [domains] if domains.class != Set
  init_count = self.count
  domains.each do |domain|
    puts "Analysing #{domain}" if OPTIONS.hardcore_verbose
    self.each do |link|
      if link.match(/.+#{Regexp.escape(domain)}.+/)
        self.delete_url(link, verbose:true)
      end
    end
  end
  puts "Deleted #{init_count - self.count} elements.".blue if @verbose
end
each() { |element| ... } click to toggle source
# File lib/disavow_tool/list.rb, line 135
def each
  @list.each do |element|
    yield(element)
  end
end
export(export_file=nil) click to toggle source
# File lib/disavow_tool/list.rb, line 117
def export(export_file=nil)
  now = Time.now.strftime("%Y%m%d%H")
  file_name = self.class.to_s.underscore + "_" + now
  export_file = export_file || EXPORT_PATH + file_name
  FileUtils.mkdir_p File.dirname(export_file)
  file = File.new(export_file, "w")
  file.puts "# Exporting #{self.class.to_s.underscore} #{ now }"
  export_write(file)
  file.close
  if @verbose
    puts "Exported #{file_name} in #{EXPORT_PATH}".red
  end
end
import(import_files) click to toggle source
# File lib/disavow_tool/list.rb, line 19
def import(import_files)
  import_files = [import_files] if import_files.class != Array
  import_files.each do |file|
    @list_files_imported << file
    puts "Importing file: #{file}"
    File.readlines(file).each do |line|
      line.chomp!
      if comment?(line) || line.blank?
        puts "cleaning comment or empty line: #{line}" if @verbose_hard
        next
      end
      unmodified_line = line
      clean_line!(line)
      puts import_message(unmodified_line).light_blue if @verbose_hard
      @list.add line
    end
  end
  self.try(:finished_import_hook)
end
mass_delete_urls(urls_to_delete) click to toggle source
# File lib/disavow_tool/list.rb, line 67
def mass_delete_urls(urls_to_delete)
  puts mass_delete_message if @verbose_hard
  urls_to_delete.each do |link|
    color_link = link.on_yellow
    puts delete_url_message(color_link).red if @verbose
  end
  @list = @list - urls_to_delete
  puts "Deleted #{@list.count} elements.".blue if @verbose
end
new() click to toggle source
# File lib/disavow_tool/list.rb, line 7
def new; raise 'abstract!' end
restore() click to toggle source
# File lib/disavow_tool/list.rb, line 113
def restore
   @list = @original_list.clone
end
summary(list=nil, original_list=nil) click to toggle source
# File lib/disavow_tool/list.rb, line 91
def summary(list=nil, original_list=nil)
  list = list || @list
  original_list = original_list || @original_list
  puts "Files imported:"
  puts @list_files_imported

  puts "#{message_sumary_imported} #{original_list.count}".blue
  puts "#{mensaje_sumary_before_export} #{list.count}".blue

  if @verbose
    total_imported = list - original_list
    puts "Total elements found after analysis: #{total_imported.count}".blue
    if( total_imported.count > 0) # It's a list with new links
      puts "Showing the #{total_imported.count} imported elements:".blue
      (total_imported).each_with_index do |line, i|
        puts "#{i+1}. #{line.light_blue}"
      end
    end
  end

end
to_a() click to toggle source
# File lib/disavow_tool/list.rb, line 141
def to_a
  @list.to_a
end