class FileChanger

Constants

ChangePathInfo

Public Class Methods

new(skip_file_names=[]) click to toggle source
# File lib/file_retriever/FileRetriever/use_cases/FileChanger.rb, line 7
def initialize(skip_file_names=[])
  default_skip_regs = ["^.git$","vendor"]
  default_skip_regs.concat(skip_file_names)
  @file_retriever = FileRetriever.new(default_skip_regs)
  @snake_case_reg = Regexp.new(/_+./)
end

Public Instance Methods

change_dirs_name(dirs) click to toggle source
# File lib/file_retriever/FileRetriever/use_cases/FileChanger.rb, line 33
def change_dirs_name(dirs)
  dirs.sort {|a,b|
    a.before.length <=> b.before.length
  }.reverse.each do |path_info|
    FileUtils.mv(path_info.before,path_info.after)
  end
end
retrieve_snake_dirs(base_path,after_type) click to toggle source
# File lib/file_retriever/FileRetriever/use_cases/FileChanger.rb, line 14
def retrieve_snake_dirs(base_path,after_type)
  dirs = []
  path_change_callback = after_type == :to_camel ? snake_to_camel : snake_to_pascal

  cb = lambda do |ftype,fn,abs_path| 
    case ftype
    when :directory
      changed_path = set_up_changed_dir(abs_path,path_change_callback)
      unless abs_path == changed_path
        path_info = ChangePathInfo.new(abs_path,changed_path)
        dirs << path_info
      end
    end
  end

  @file_retriever.retrieve(base_path,cb) 
  return dirs
end

Private Instance Methods

camel_to_pascal(str) click to toggle source
# File lib/file_retriever/FileRetriever/use_cases/FileChanger.rb, line 69
def camel_to_pascal(str)
   reg = /(?:(?:^[a-z]|[A-Z])(?:[a-z0-9]+))/
   matches = str.scan(reg)
   changed_str = matches.map{|s|s.capitalize}.join("")
   changed_str.length == str.length ? changed_str : nil
end
set_up_changed_dir(path,cb) click to toggle source
# File lib/file_retriever/FileRetriever/use_cases/FileChanger.rb, line 63
def set_up_changed_dir(path,cb)
  path_data = split_target(path)
  changed_path = cb.call(path_data.pop)
  [path_data,changed_path].join('/')
end
snake_to_camel() click to toggle source
# File lib/file_retriever/FileRetriever/use_cases/FileChanger.rb, line 42
def snake_to_camel
  lambda { |str|
    str.gsub(@snake_case_reg) do |word|  
      word.upcase.sub(/_+/,'')
    end
  }
end
snake_to_pascal() click to toggle source
# File lib/file_retriever/FileRetriever/use_cases/FileChanger.rb, line 50
def snake_to_pascal
  lambda { |str|
    return str unless str.match(/_/)
    str.split(/_/).map{|s| s.capitalize }.join("")
  }
end
split_target(path) click to toggle source
# File lib/file_retriever/FileRetriever/use_cases/FileChanger.rb, line 57
def split_target(path)
  splited_path = path.split('/')
  target = splited_path.pop
  return splited_path,target
end