aboutsummaryrefslogtreecommitdiff
path: root/vim/tmp/command_t/ruby/command-t/scanner/file_scanner.rb
diff options
context:
space:
mode:
authorBen Beltran <ben@freshout.us>2013-06-05 08:57:32 -0500
committerBen Beltran <ben@freshout.us>2013-06-05 08:57:32 -0500
commite0a0519119ab361bfe6ae6f520d189ae0eaca272 (patch)
treed8e2c7ef537b946659d36551d944416b7cad8610 /vim/tmp/command_t/ruby/command-t/scanner/file_scanner.rb
parent7da00f6032b26afa3dcdee804933d4785ec48408 (diff)
Delete a bunch of stuff, better arrange submodules
Diffstat (limited to 'vim/tmp/command_t/ruby/command-t/scanner/file_scanner.rb')
-rw-r--r--vim/tmp/command_t/ruby/command-t/scanner/file_scanner.rb94
1 files changed, 0 insertions, 94 deletions
diff --git a/vim/tmp/command_t/ruby/command-t/scanner/file_scanner.rb b/vim/tmp/command_t/ruby/command-t/scanner/file_scanner.rb
deleted file mode 100644
index 4ea15c8..0000000
--- a/vim/tmp/command_t/ruby/command-t/scanner/file_scanner.rb
+++ /dev/null
@@ -1,94 +0,0 @@
-# Copyright 2010-2011 Wincent Colaiuta. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-#
-# 1. Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
-# and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-
-require 'command-t/vim'
-require 'command-t/scanner'
-
-module CommandT
- # Reads the current directory recursively for the paths to all regular files.
- class FileScanner < Scanner
- class FileLimitExceeded < ::RuntimeError; end
-
- def initialize path = Dir.pwd, options = {}
- @path = path
- @max_depth = options[:max_depth] || 15
- @max_files = options[:max_files] || 10_000
- @scan_dot_directories = options[:scan_dot_directories] || false
- end
-
- def paths
- return @paths unless @paths.nil?
- begin
- @paths = []
- @depth = 0
- @files = 0
- @prefix_len = @path.chomp('/').length
- add_paths_for_directory @path, @paths
- rescue FileLimitExceeded
- end
- @paths
- end
-
- def flush
- @paths = nil
- end
-
- def path= str
- if @path != str
- @path = str
- flush
- end
- end
-
- private
-
- def path_excluded? path
- # first strip common prefix (@path) from path to match VIM's behavior
- path = path[(@prefix_len + 1)..-1]
- path = VIM::escape_for_single_quotes path
- ::VIM::evaluate("empty(expand(fnameescape('#{path}')))").to_i == 1
- end
-
- def add_paths_for_directory dir, accumulator
- Dir.foreach(dir) do |entry|
- next if ['.', '..'].include?(entry)
- path = File.join(dir, entry)
- unless path_excluded?(path)
- if File.file?(path)
- @files += 1
- raise FileLimitExceeded if @files > @max_files
- accumulator << path[@prefix_len + 1..-1]
- elsif File.directory?(path)
- next if @depth >= @max_depth
- next if (entry.match(/\A\./) && !@scan_dot_directories)
- @depth += 1
- add_paths_for_directory path, accumulator
- @depth -= 1
- end
- end
- end
- rescue Errno::EACCES
- # skip over directories for which we don't have access
- end
- end # class FileScanner
-end # module CommandT