lib/guard/rspec/inspector.rb in guard-rspec-0.1.9 vs lib/guard/rspec/inspector.rb in guard-rspec-0.2.0

- old
+ new

@@ -1,41 +1,41 @@ module Guard class RSpec module Inspector class << self - + def clean(paths) paths.uniq! paths.compact! - paths = paths.select { |p| spec_file?(p) || spec_folder?(p) } - paths = paths.delete_if { |p| included_in_other_path?(p, paths) } - clear_spec_files_list - paths + clear_spec_files_list_after do + paths = paths.select { |p| spec_file?(p) || spec_folder?(p) } + end + paths.reject { |p| included_in_other_path?(p, paths) } end - + private - - def spec_folder?(path) - path.match(/^\/?spec/) && !path.match(/\..+$/) - end - + def spec_file?(path) spec_files.include?(path) end - + + def spec_folder?(path) + path.match(%r{^spec[^\.]*$}) + end + def spec_files - @spec_files ||= Dir.glob("spec/**/*_spec.rb") + @spec_files ||= Dir["spec/**/*_spec.rb"] end - - def clear_spec_files_list + + def clear_spec_files_list_after + yield @spec_files = nil end - + def included_in_other_path?(path, paths) - paths = paths.select { |p| p != path } - paths.any? { |p| path.include?(p) && (path.gsub(p, '')).include?("/") } + (paths - [path]).any? { |p| path.include?(p) && path.sub(p, '').include?('/') } end - + end end end -end \ No newline at end of file +end