Sha256: 81cc3d8a98217b769a152df7c16f7aea942284182010dccf9f6756c7670787a3
Contents?: true
Size: 1.36 KB
Versions: 2
Compression:
Stored size: 1.36 KB
Contents
require 'fileutils' class Trash attr_reader :errors attr_accessor :trash_can def initialize(options = {}) @trash_can = options[:trash_can].nil? ? "#{ENV['HOME']}/.Trash" : options[:trash_can] create_trash_can_if_absent @errors = [] end def has_trash_can? File.directory? @trash_can end def throw_out(*paths) paths.each do |path| path = File.expand_path(path) if File.exist? path FileUtils.mv(path, "#{@trash_can}/#{unique_file_name(path)}") else add_error "#{path} does not exist. Please check the file path." return 1 end end return 0 end def add_error(error) @errors << error end private def create_trash_can_if_absent FileUtils.mkdir_p(@trash_can) unless has_trash_can? end def unique_file_name(path) file_name = File.split(path).last file_extension = File.extname(path) return file_name unless File.exists?("#{@trash_can}/#{file_name}") if File.directory? path unique_file_name_finder { |c| "#{file_name}#{"%02d" % c}" } else unique_file_name_finder { |c| "#{file_name.gsub(file_extension, "#{"%02d" % c}#{file_extension}")}" } end end def unique_file_name_finder count = 1 while File.exists?("#{@trash_can}/#{yield(count)}") count += 1 end return yield(count) end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
trash-0.2.1 | lib/trash.rb |
trash-0.2.0 | lib/trash.rb |