nrename 0.2.3 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -119,16 +119,7 @@ module Nrename
119
119
 
120
120
  if options.recursive
121
121
  dirs.dup.each do |dir|
122
- # Workaround: every other engine except jruby does not
123
- # work with unescaped path, also mri-1.8 does not have
124
- # constant RUBY_ENGINE defined.
125
- unless defined? RUBY_ENGINE and RUBY_ENGINE == 'jruby'
126
- dir = dir.shellescape
127
- end
128
-
129
- Dir.glob(File.join dir, '**/') do |subdir|
130
- dirs << subdir.chomp('/')
131
- end
122
+ dirs.merge Utils.all_subdirs_of dir
132
123
  end
133
124
  end
134
125
 
@@ -0,0 +1,20 @@
1
+ require 'pathname'
2
+ require 'set'
3
+
4
+ module Nrename
5
+ module Utils
6
+ def all_subdirs_of(dir)
7
+ dir = Pathname.new dir
8
+
9
+ children = Set.new
10
+
11
+ dir.children.select(&:directory?).map(&:to_s).each do |child|
12
+ children.add child
13
+ children.merge all_subdirs_of child
14
+ end
15
+
16
+ Array children
17
+ end
18
+ module_function :all_subdirs_of
19
+ end
20
+ end
@@ -1,3 +1,3 @@
1
1
  module Nrename
2
- VERSION = '0.2.3'
2
+ VERSION = '0.2.5'
3
3
  end
data/lib/nrename.rb CHANGED
@@ -5,6 +5,7 @@ require 'nrename/directory'
5
5
  require 'nrename/numbered_file'
6
6
  require 'nrename/options'
7
7
  require 'nrename/runner'
8
+ require 'nrename/utils'
8
9
  require 'nrename/version'
9
10
 
10
11
  module Nrename
@@ -0,0 +1,59 @@
1
+ require 'spec_helper'
2
+
3
+ describe Nrename::Utils do
4
+ include Nrename::Utils
5
+
6
+ describe '.all_subdirs_of' do
7
+ let(:test_dir) { File.expand_path '[dir] )with( funny {name}' }
8
+
9
+ let(:subdirs) {
10
+ %w[foo bar baz quux].map { |dir|
11
+ File.expand_path dir, test_dir
12
+ }
13
+ }
14
+
15
+ before :each do
16
+ mkdir_p subdirs
17
+ end
18
+
19
+ after :each do
20
+ rm_rf test_dir
21
+ end
22
+
23
+ it 'returns subdirectories of provided directory' do
24
+ expect(all_subdirs_of test_dir).to match_array subdirs
25
+ end
26
+
27
+ it 'ignores plain files' do
28
+ inside test_dir do
29
+ touch %w[some plain files]
30
+ end
31
+
32
+ expect(all_subdirs_of test_dir).to match_array subdirs
33
+ end
34
+
35
+ it 'captures deeply nested directories' do
36
+ inside test_dir do
37
+ inside 'deeper' do
38
+ inside 'even_deeper' do
39
+ mkdir 'deepest'
40
+ end
41
+ end
42
+ end
43
+
44
+ all_subdirs = [
45
+ File.join(test_dir, 'deeper'),
46
+ File.join(test_dir, 'deeper', 'even_deeper'),
47
+ File.join(test_dir, 'deeper', 'even_deeper', 'deepest')
48
+ ] + subdirs
49
+
50
+ expect(all_subdirs_of test_dir).to match_array all_subdirs
51
+ end
52
+
53
+ it 'raises error when given argument is not a directory' do
54
+ expect {
55
+ all_subdirs_of '/non/existant/directory'
56
+ }.to raise_error StandardError
57
+ end
58
+ end
59
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nrename
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -111,10 +111,12 @@ files:
111
111
  - lib/nrename/numbered_file.rb
112
112
  - lib/nrename/options.rb
113
113
  - lib/nrename/runner.rb
114
+ - lib/nrename/utils.rb
114
115
  - lib/nrename/version.rb
115
116
  - spec/nrename/directory_spec.rb
116
117
  - spec/nrename/numbered_file_spec.rb
117
118
  - spec/nrename/options_spec.rb
119
+ - spec/nrename/utils_spec.rb
118
120
  - spec/spec_helper.rb
119
121
  homepage: https://github.com/vderyagin/nrename
120
122
  licenses:
@@ -131,7 +133,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
131
133
  version: '0'
132
134
  segments:
133
135
  - 0
134
- hash: -821845461691458616
136
+ hash: -2006144639180283266
135
137
  required_rubygems_version: !ruby/object:Gem::Requirement
136
138
  none: false
137
139
  requirements: