nrename 0.2.3 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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: