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