Class: KuaipanRenamer::Walker

Inherits:
Object
  • Object
show all
Defined in:
lib/kuaipan_renamer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(root, dry_run: false) ⇒ Walker

Returns a new instance of Walker.



16
17
18
19
20
# File 'lib/kuaipan_renamer.rb', line 16

def initialize( root, dry_run: false )
  @root = root
  @dry_run = dry_run
  @err_log = Logger.new(STDERR)
end

Instance Attribute Details

#rootObject (readonly)

Returns the value of attribute root.



14
15
16
# File 'lib/kuaipan_renamer.rb', line 14

def root
  @root
end

Instance Method Details

#new_name_for(file) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/kuaipan_renamer.rb', line 58

def new_name_for file
  map = {
    "(" => "",
    ")" => "",
    "[" => "",
    "]" => ""
  }
  file.dup.tap do |f|
    map.each do |from, to|
      f.gsub!( from, to )
    end
  end
end

#rename_file(file) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/kuaipan_renamer.rb', line 41

def rename_file( file )
  dir, base = *File.split(file)
  new_name  = new_name_for base
  unless base == new_name
    fullpath = File.join dir, new_name
    puts "#{file.ljust(50).red} => #{fullpath.green}"
    unless @dry_run
      begin
        File.rename file, fullpath
      rescue => e
        @err_log.error "Error renaming #{file} to #{fullpath}".red.bold
        @err_log.error "  - " << e.message
      end
    end
  end
end

#rename_folder(folder) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/kuaipan_renamer.rb', line 26

def rename_folder( folder )
  #puts "glob: #{folder}"
  Dir.glob( "#{folder.shellescape}/*" ) do |f|
    #puts "  - " + f
    if File.directory? f
      #puts "folder #{f}"
      rename_folder f
    else
      rename_file f
    end
  end

  rename_file folder
end

#rename_recursivelyObject



22
23
24
# File 'lib/kuaipan_renamer.rb', line 22

def rename_recursively
  rename_folder root
end