nrename 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  [![Build Status](https://secure.travis-ci.org/vderyagin/nrename.png)](http://travis-ci.org/vderyagin/nrename)
2
2
  [![Dependency Status](https://gemnasium.com/vderyagin/nrename.png)](https://gemnasium.com/vderyagin/nrename)
3
+ [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/vderyagin/nrename)
3
4
 
4
5
  # Nrename
5
6
 
@@ -11,6 +12,12 @@ Command-line utility for renaming numbered files.
11
12
  gem install nrename
12
13
  ```
13
14
 
15
+ ## Compatibility ##
16
+
17
+ This gem does not have any external runtime dependencies, nor does it use any
18
+ fancy language features/syntax, so it works on pretty much every Ruby
19
+ implementation out there.
20
+
14
21
  ## Description ##
15
22
 
16
23
 
@@ -52,4 +59,16 @@ names:
52
59
 
53
60
  ## Usage ##
54
61
 
55
- See `nrename --help`
62
+ ```
63
+ $ nrename --help
64
+ Usage: nrename [OPTINS] DIR...
65
+
66
+ Options:
67
+ -X, --execute Do actual work
68
+ -R, --recursive Process given directories recursively
69
+ -N, --numbers-only Leave only numbers in file name
70
+ --regexp REGEXP Use REGEXP to match filenames
71
+ -v, --[no-]verbose Run verbosely
72
+ -h, --help Display this message
73
+ --version Display version
74
+ ```
data/bin/nrename CHANGED
@@ -2,4 +2,4 @@
2
2
 
3
3
  require File.expand_path '../../lib/nrename', __FILE__
4
4
 
5
- Nrename.run ARGV.dup
5
+ Nrename::Runner.run ARGV.dup
@@ -8,11 +8,6 @@ Feature: Options processing
8
8
  Then the exit status should be 0
9
9
  And the stdout should contain "Usage: nrename "
10
10
 
11
- Scenario: Displaying help when run without options
12
- When I run `nrename`
13
- Then the exit status should be 0
14
- And the stdout should contain "Usage: nrename "
15
-
16
11
  Scenario: Displaying help when run without any options
17
12
  When I run `nrename`
18
13
  Then the exit status should be 0
@@ -20,18 +20,6 @@ Feature: Renaming files
20
20
  | 101.txt |
21
21
  | 200.txt |
22
22
 
23
- Scenario: Renaming files in current directory
24
- Given a directory named "dir"
25
- And the following empty files inside directory "dir":
26
- | 1.txt |
27
- | 10.txt |
28
- When I cd to "dir"
29
- And I run `nrename -X`
30
- Then the exit status should be 0
31
- And the following files should exist:
32
- | 01.txt |
33
- | 10.txt |
34
-
35
23
  Scenario: Dry-run
36
24
  Given a directory named "dir"
37
25
  And the following empty files inside directory "dir":
@@ -77,7 +65,7 @@ Feature: Renaming files
77
65
  And the following empty files inside directory "bar":
78
66
  | 33.txt |
79
67
  | 01234.txt |
80
- And I run `nrename -XR`
68
+ And I run `nrename -XR .`
81
69
  Then the exit status should be 0
82
70
  And the following files should exist inside directory "foo":
83
71
  | 01.txt |
@@ -93,7 +81,7 @@ Feature: Renaming files
93
81
  | bb10.txt |
94
82
  | cc0023.txt |
95
83
  When I cd to "dir"
96
- When I run `nrename -XN`
84
+ When I run `nrename -XN .`
97
85
  Then the exit status should be 0
98
86
  And the following files should exist:
99
87
  | 01.txt |
@@ -101,10 +89,9 @@ Feature: Renaming files
101
89
  | 23.txt |
102
90
  And the following files should not exist:
103
91
  | bb1.txt |
104
- | bb1o.txt |
92
+ | bb10.txt |
105
93
  | cc0023.txt |
106
94
 
107
-
108
95
  Scenario: Using custom regular expression
109
96
  Given a directory named "dir"
110
97
  And the following empty files inside directory "dir":
@@ -112,7 +99,7 @@ Feature: Renaming files
112
99
  | 003_10.txt |
113
100
  | 003_0023.txt |
114
101
  When I cd to "dir"
115
- When I run `nrename -X --regexp '^003_(\d+)\.txt'`
102
+ When I run `nrename -X --regexp '^003_(\d+)\.txt' .`
116
103
  Then the exit status should be 0
117
104
  And the following files should exist:
118
105
  | 003_01.txt |
@@ -1,23 +1,26 @@
1
1
  require 'pathname'
2
2
  require 'fileutils'
3
+ require 'forwardable'
3
4
 
4
5
  module Nrename
5
6
  class Directory
7
+ extend Forwardable
8
+
9
+ def_delegator :numbered_files, :empty?
10
+ def_delegator :Nrename, :options
11
+
6
12
  def initialize(dir)
7
13
  @dir = Pathname.new dir
14
+ end
8
15
 
9
- opts = Nrename.options
10
-
11
- @verbose = opts.verbose
12
- @execute = opts.execute
13
- @pattern = opts.pattern
14
- @numbers_only = opts.numbers_only
16
+ def files
17
+ @dir.children.reject &:directory?
15
18
  end
16
19
 
17
20
  def numbered_files
18
- @numbered_files ||= @dir.children.select { |file|
19
- !file.directory? && file.basename.to_s =~ @pattern
20
- }
21
+ @numbered_files ||= files.
22
+ select { |file| file.basename.to_s =~ options.pattern }.
23
+ map &(NumberedFile.method :new)
21
24
  end
22
25
 
23
26
  def num_field_length
@@ -25,39 +28,13 @@ module Nrename
25
28
  end
26
29
 
27
30
  def max_number
28
- numbered_files.map(&method(:number_for)).max
31
+ numbered_files.map(&:number).max
29
32
  end
30
33
 
31
34
  def normalize
32
- numbered_files.each do |old|
33
- new = normalized_name_for(old)
34
- next if old == new
35
- FileUtils.mv old, new, {
36
- :noop => !@execute,
37
- :verbose => @verbose
38
- }
35
+ numbered_files.each do |file|
36
+ file.normalize num_field_length
39
37
  end
40
38
  end
41
-
42
- def normalized_name_for(path)
43
- dirname, filename = path.split
44
- new_filename = filename.to_s
45
- if @numbers_only
46
- name = adjusted_number_string_for path
47
- extname = filename.extname
48
- new_filename = "#{name}#{extname}"
49
- else
50
- new_filename[@pattern, 1] = adjusted_number_string_for(path)
51
- end
52
- dirname + new_filename
53
- end
54
-
55
- def number_for(path)
56
- path.basename.to_s[@pattern, 1].to_i
57
- end
58
-
59
- def adjusted_number_string_for(path)
60
- number_for(path).to_s.rjust num_field_length, '0'
61
- end
62
39
  end
63
40
  end
@@ -0,0 +1,51 @@
1
+ require 'pathname'
2
+ require 'fileutils'
3
+ require 'forwardable'
4
+
5
+ module Nrename
6
+ class NumberedFile
7
+ attr_reader :path, :number_length
8
+
9
+ extend Forwardable
10
+
11
+ def_delegator :Nrename, :options
12
+
13
+ def initialize(path)
14
+ @path = path
15
+ end
16
+
17
+ def number
18
+ path.basename.to_s[options.pattern, 1].to_i
19
+ end
20
+
21
+ def normalize(length)
22
+ @number_length = length
23
+ new_name = normalized_path
24
+ return if path == new_name
25
+
26
+ FileUtils.mv path, new_name, {
27
+ :noop => !options.execute,
28
+ :verbose => options.verbose
29
+ }
30
+ end
31
+
32
+ def normalized_path
33
+ dirname, filename = path.split
34
+ new_filename = filename.to_s
35
+
36
+ if options.numbers_only
37
+ name = adjusted_number
38
+ extname = filename.extname
39
+ new_filename = "#{name}#{extname}"
40
+ else
41
+ new_filename[options.pattern, 1] = adjusted_number
42
+ end
43
+
44
+ dirname + new_filename
45
+ end
46
+
47
+ def adjusted_number
48
+ number.to_s.rjust number_length, '0'
49
+ end
50
+ end
51
+ end
@@ -1,30 +1,34 @@
1
+ require 'forwardable'
1
2
  require 'optparse'
2
3
  require 'ostruct'
4
+ require 'set'
5
+ require 'singleton'
3
6
 
4
7
  module Nrename
5
- module Options
6
- def self.parse(args)
7
- default_options = {
8
+ class Options
9
+ include Singleton
10
+
11
+ def default_options
12
+ {
8
13
  :numbers_only => false,
9
- :dirs => [],
14
+ :dirs => Set.new,
10
15
  :execute => false,
11
16
  :pattern => /(\d+)/,
12
17
  :recursive => false,
13
18
  :verbose => true
14
19
  }
20
+ end
15
21
 
16
- options = OpenStruct.new default_options
17
-
18
- executable_name = File.basename $PROGRAM_NAME
22
+ extend Forwardable
23
+ def_delegators :options, *instance.default_options.keys
19
24
 
20
- # display help if called through 'nrename' executable
21
- # and without arguments
22
- if args.empty? && executable_name == 'nrename'
23
- args << '--help'
24
- end
25
+ def options
26
+ @options ||= OpenStruct.new default_options
27
+ end
25
28
 
29
+ def parser
26
30
  OptionParser.new do |opts|
27
- opts.banner = "Usage: #{executable_name} [OPTINS] [DIR]..."
31
+ opts.banner = "Usage: #{Nrename.executable_name} [OPTINS] DIR..."
28
32
 
29
33
  opts.separator ''
30
34
  opts.separator 'Options:'
@@ -34,17 +38,17 @@ module Nrename
34
38
  end
35
39
 
36
40
  opts.on '-R', '--recursive',
37
- 'Process given directories recursively' do |rec|
41
+ 'Process given directories recursively' do |rec|
38
42
  options.recursive = rec
39
43
  end
40
44
 
41
45
  opts.on '-N', '--numbers-only',
42
- 'Leave only numbers in file name' do |n|
46
+ 'Leave only numbers in file name' do |n|
43
47
  options.numbers_only = n
44
48
  end
45
49
 
46
50
  opts.on '--regexp REGEXP', Regexp,
47
- 'Use REGEXP to match filenames' do |regexp|
51
+ 'Use REGEXP to match filenames' do |regexp|
48
52
  options.pattern = regexp
49
53
  end
50
54
 
@@ -61,39 +65,52 @@ module Nrename
61
65
  puts VERSION
62
66
  exit
63
67
  end
64
- end.parse!(args)
68
+ end
69
+ end
70
+
71
+ def parse(args)
72
+ @options = nil
73
+
74
+ # Display help if called through 'nrename' executable and without arguments:
75
+ if args.empty? && Nrename.executable_name == 'nrename'
76
+ args << '--help'
77
+ end
78
+
79
+ parser.parse! args
65
80
 
66
- if !options.execute && executable_name == 'nrename'
81
+ if !options.execute && Nrename.executable_name == 'nrename'
67
82
  at_exit do
68
83
  warn 'No renaming is done. Run with -X option to perform actual changes.'
69
84
  end
70
85
  end
71
86
 
87
+ options.dirs = extract_dirs args
88
+
89
+ self
90
+ end
91
+
92
+ def extract_dirs(args)
93
+ dirs = Set.new
94
+
72
95
  args.each do |arg|
73
96
  dir = File.expand_path arg
74
97
  if File.directory? dir
75
- options.dirs << dir
98
+ dirs << dir
76
99
  else
77
100
  warn "#{dir} is not a valid directory."
78
101
  exit 1
79
102
  end
80
103
  end
81
104
 
82
- if options.dirs.empty?
83
- options.dirs << File.expand_path('.')
84
- end
85
-
86
105
  if options.recursive
87
- options.dirs.dup.each do |dir|
88
- Dir.glob "#{dir}/**/" do |subdir|
89
- options.dirs << subdir.chomp('/')
106
+ dirs.dup.each do |dir|
107
+ Dir.glob(File.join dir, '**/') do |subdir|
108
+ dirs << subdir.chomp('/')
90
109
  end
91
110
  end
92
111
  end
93
112
 
94
- options.dirs.uniq!
95
-
96
- options
113
+ dirs
97
114
  end
98
115
  end
99
116
  end
@@ -0,0 +1,14 @@
1
+ module Nrename
2
+ module Runner
3
+ def self.run(args)
4
+ Nrename.parse_options args
5
+
6
+ dirs = Nrename.options.dirs.map { |dir| Directory.new dir }
7
+ if dirs.all? &:empty?
8
+ warn 'No matched files to rename.'
9
+ else
10
+ dirs.each &:normalize
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,3 +1,3 @@
1
1
  module Nrename
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/nrename.rb CHANGED
@@ -1,19 +1,22 @@
1
1
  libdir = File.expand_path(File.dirname __FILE__)
2
2
  $:.push libdir unless $:.include? libdir
3
3
 
4
- require 'nrename/version'
5
4
  require 'nrename/directory'
5
+ require 'nrename/numbered_file'
6
6
  require 'nrename/options'
7
+ require 'nrename/runner'
8
+ require 'nrename/version'
7
9
 
8
10
  module Nrename
9
- def self.options
10
- # return default options if not alredy set by .run():
11
- @options ||= Options.parse []
11
+ def self.executable_name
12
+ File.basename $PROGRAM_NAME
12
13
  end
13
14
 
14
- def self.run(args=[])
15
- @options = Options.parse args
15
+ def self.options
16
+ Options.instance
17
+ end
16
18
 
17
- options.dirs.map { |dir| Directory.new dir }.each &:normalize
19
+ def self.parse_options(args)
20
+ options.parse args
18
21
  end
19
22
  end
@@ -7,39 +7,74 @@ describe Nrename::Directory do
7
7
  rm_rf test_dir
8
8
  end
9
9
 
10
+ describe '#files' do
11
+ it 'returns all files inside directory' do
12
+ files = %w[1.rb 2.rb 3.rb foo.rb bar baz.java]
13
+
14
+ inside test_dir do
15
+ touch files
16
+ end
17
+
18
+ dir = Nrename::Directory.new test_dir
19
+ expect(dir).to have(files.length).files
20
+ end
21
+
22
+ it 'ignores directories' do
23
+ files = %w[1.rb 2.rb 3.rb foo.rb bar baz.java]
24
+ dirs = %w[1 2 03 40 55]
25
+
26
+ inside test_dir do
27
+ touch files
28
+ mkdir dirs
29
+ end
30
+
31
+ dir = Nrename::Directory.new test_dir
32
+ expect(dir).to have(files.length).files
33
+ end
34
+ end
35
+
10
36
  describe '#numbered_files' do
11
- it 'correctly determines number of numbered files' do
37
+ it 'returns all numbered files' do
38
+ files = %w[1.rb 2.rb 3.rb]
39
+
12
40
  inside test_dir do
13
- touch %w[1.rb 2.rb 3.rb]
41
+ touch files
14
42
  end
15
43
 
16
44
  dir = Nrename::Directory.new test_dir
17
- dir.should have(3).numbered_files
45
+ expect(dir).to have(files.length).numbered_files
18
46
  end
19
47
 
20
48
  it 'returns empty array when there is no num. files in dir' do
21
49
  mkdir test_dir
22
50
  dir = Nrename::Directory.new test_dir
23
- dir.should have(:no).numbered_files
51
+ expect(dir).to have(:no).numbered_files
24
52
  end
25
53
 
26
54
  it 'does not care about non-numbered files' do
55
+ numbered_files = %w[1.rb 2.rb 3.rb]
56
+ unnumbered_files = %w[foo.rb bar baz.java]
57
+
27
58
  inside test_dir do
28
- touch %w[1.rb 2.rb 3.rb foo.rb bar baz.java]
59
+ touch numbered_files
60
+ touch unnumbered_files
29
61
  end
30
62
 
31
63
  dir = Nrename::Directory.new test_dir
32
- dir.should have(3).numbered_files
64
+ expect(dir).to have(numbered_files.length).numbered_files
33
65
  end
34
66
 
35
67
  it 'does not care about directories' do
68
+ files = %w[1.rb 2.rb 3.rb]
69
+ dirs = %w[1 2 03 40 55]
70
+
36
71
  inside test_dir do
37
- touch %w[1.rb 2.rb 3.rb]
38
- mkdir %w[1 2 03 40 55]
72
+ touch files
73
+ mkdir dirs
39
74
  end
40
75
 
41
76
  dir = Nrename::Directory.new test_dir
42
- dir.should have(3).numbered_files
77
+ expect(dir).to have(files.length).numbered_files
43
78
  end
44
79
  end
45
80
 
@@ -50,7 +85,7 @@ describe Nrename::Directory do
50
85
  end
51
86
 
52
87
  dir = Nrename::Directory.new test_dir
53
- dir.num_field_length.should be == 4
88
+ expect(dir.num_field_length).to be == 4
54
89
  end
55
90
 
56
91
  it 'ignores starting zeros in number' do
@@ -59,7 +94,7 @@ describe Nrename::Directory do
59
94
  end
60
95
 
61
96
  dir = Nrename::Directory.new test_dir
62
- dir.num_field_length.should be == 2
97
+ expect(dir.num_field_length).to be == 2
63
98
  end
64
99
  end
65
100
 
@@ -70,7 +105,7 @@ describe Nrename::Directory do
70
105
  end
71
106
 
72
107
  dir = Nrename::Directory.new test_dir
73
- dir.max_number.should be == 3
108
+ expect(dir.max_number).to be == 3
74
109
  end
75
110
 
76
111
  it 'is not fooled by fancy file names' do
@@ -79,7 +114,7 @@ describe Nrename::Directory do
79
114
  end
80
115
 
81
116
  dir = Nrename::Directory.new test_dir
82
- dir.max_number.should be == 98
117
+ expect(dir.max_number).to be == 98
83
118
  end
84
119
  end
85
120
 
@@ -97,52 +132,10 @@ describe Nrename::Directory do
97
132
  dir.normalize
98
133
 
99
134
  expected = %w[01 02 03 04 05 06 10 11]
100
- renamed_files = Dir.entries(test_dir)
101
- expected.each { |file| renamed_files.should include file }
102
- end
103
- end
104
-
105
- describe '#normalized_name_for' do
106
- it 'returns normalized name for file' do
107
- dir = Nrename::Directory.new test_dir
108
- file = Pathname.new(test_dir) + 'b1.txt'
109
- dir.stub :num_field_length => 4
110
- new_name = dir.normalized_name_for(file).basename.to_s
111
- new_name.should be == 'b0001.txt'
112
- end
113
-
114
- it 'returns bare number if numbers_only options is provided' do
115
- Nrename.options.stub :numbers_only => true
116
- dir = Nrename::Directory.new test_dir
117
- file = Pathname.new(test_dir) + 'b1.txt'
118
- dir.stub :num_field_length => 4
119
- new_name = dir.normalized_name_for(file).basename.to_s
120
- new_name.should be == '0001.txt'
121
- end
122
- end
135
+ renamed_files = Dir.entries(test_dir).
136
+ reject &(File.method :directory?)
123
137
 
124
- describe '#number_for' do
125
- it 'returns number for file' do
126
- inside test_dir do
127
- touch 'av023cd.txt'
128
- end
129
-
130
- dir = Nrename::Directory.new test_dir
131
- file = dir.numbered_files.first
132
- dir.number_for(file).should be == 23
133
- end
134
- end
135
-
136
- describe '#adjusted_number_string_for' do
137
- it 'returns number string adjusted to field length' do
138
- inside test_dir do
139
- touch 'qwe0032rty.gif'
140
- end
141
-
142
- dir = Nrename::Directory.new test_dir
143
- dir.stub :num_field_length => 6
144
- file = dir.numbered_files.first
145
- dir.adjusted_number_string_for(file).should be == '000032'
138
+ expect(renamed_files).to match_array expected
146
139
  end
147
140
  end
148
141
  end
@@ -0,0 +1,70 @@
1
+ require 'spec_helper'
2
+
3
+ describe Nrename::NumberedFile do
4
+ def numbered_file(path)
5
+ Nrename::NumberedFile.new Pathname.new path
6
+ end
7
+
8
+ describe '#number' do
9
+ it 'returns correct number for simple cases' do
10
+ file = numbered_file '123'
11
+ expect(file.number).to be == 123
12
+ end
13
+
14
+ it 'returns correct number for cluttered file names' do
15
+ file = numbered_file 'aa_125bb.txt'
16
+ expect(file.number).to be == 125
17
+ end
18
+
19
+ it 'handles leading zeros the right way' do
20
+ file = numbered_file '0001.txt'
21
+ expect(file.number).to be == 1
22
+ end
23
+ end
24
+
25
+ describe '#normalized_path' do
26
+ context 'leaving numbers only' do
27
+ before do
28
+ Nrename.options.stub :numbers_only => true
29
+ end
30
+
31
+ it 'normalizes file name' do
32
+ file = numbered_file 'abc_34.rb'
33
+
34
+ file.stub :number_length => 4
35
+ expect(file.normalized_path.to_s).to be == '0034.rb'
36
+
37
+ file.stub :number_length => 5
38
+ expect(file.normalized_path.to_s).to be == '00034.rb'
39
+ end
40
+ end
41
+
42
+ context 'replacing numbers' do
43
+ before do
44
+ Nrename.options.stub :numbers_only => false
45
+ end
46
+
47
+ it 'normalizes file name' do
48
+ file = numbered_file 'abc_34.rb'
49
+
50
+ file.stub :number_length => 4
51
+ expect(file.normalized_path.to_s).to be == 'abc_0034.rb'
52
+
53
+ file.stub :number_length => 5
54
+ expect(file.normalized_path.to_s).to be == 'abc_00034.rb'
55
+ end
56
+ end
57
+ end
58
+
59
+ describe '#adjusted_number' do
60
+ it 'returns number, adjusted accordingly to #number_length' do
61
+ file = numbered_file 'foo123bar'
62
+
63
+ file.stub :number_length => 4
64
+ expect(file.adjusted_number).to be == '0123'
65
+
66
+ file.stub :number_length => 6
67
+ expect(file.adjusted_number).to be == '000123'
68
+ end
69
+ end
70
+ end
@@ -1,28 +1,24 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Nrename::Options do
4
- def parse_options(args)
5
- Nrename::Options.parse args
6
- end
7
-
8
4
  describe 'verbosity' do
9
5
  it 'is on by default (when no arguments provided)' do
10
- parse_options([]).verbose.should be_true
6
+ expect(Nrename.parse_options([]).verbose).to be_true
11
7
  end
12
8
 
13
9
  it 'is off when or "--no-verbose" switch is provided' do
14
- parse_options(%w[--no-verbose]).verbose.should be_false
10
+ expect(Nrename.parse_options(%w[--no-verbose]).verbose).to be_false
15
11
  end
16
12
  end
17
13
 
18
14
  describe 'recursive processing' do
19
15
  it 'is off by default' do
20
- parse_options([]).recursive.should be_false
16
+ expect(Nrename.parse_options([]).recursive).to be_false
21
17
  end
22
18
 
23
19
  it 'is on when "-R" of "--recursive" is provided' do
24
20
  %w[-R --recursive].each do |option|
25
- parse_options([option]).recursive.should be_true
21
+ expect(Nrename.parse_options([option]).recursive).to be_true
26
22
  end
27
23
  end
28
24
  end
@@ -45,21 +41,21 @@ describe Nrename::Options do
45
41
  subdirs.each do |subdir|
46
42
  subdir_path = File.expand_path subdir, test_dir
47
43
  arg = File.join test_dir, subdir
48
- parse_options([arg]).dirs.should include subdir_path
44
+ expect(Nrename.parse_options([arg]).dirs).to include subdir_path
49
45
  end
50
46
  end
51
47
 
52
- it 'captures current dir if no arguments provided' do
53
- parse_options([]).dirs.should be == [File.expand_path('.')]
48
+ it 'empty if no arguments provided' do
49
+ expect(Nrename.parse_options([]).dirs).to be_empty
54
50
  end
55
51
 
56
52
  it 'recursively captures all subdirs when -R option provided' do
57
- dirs = parse_options(['-R', test_dir]).dirs
53
+ dirs = Nrename.parse_options(['-R', test_dir]).dirs
58
54
 
59
- dirs.should include test_dir
55
+ expect(dirs).to include test_dir
60
56
 
61
57
  subdirs.each do |subdir|
62
- dirs.should include File.join(test_dir, subdir)
58
+ expect(dirs).to include File.join(test_dir, subdir)
63
59
  end
64
60
  end
65
61
  end
data/spec/spec_helper.rb CHANGED
@@ -13,4 +13,8 @@ end
13
13
  RSpec.configure do |config|
14
14
  config.include FileUtils
15
15
  config.include Support
16
+
17
+ config.expect_with :rspec do |c|
18
+ c.syntax = :expect
19
+ end
16
20
  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.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,41 +9,72 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-13 00:00:00.000000000 Z
12
+ date: 2012-08-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rake
16
- requirement: &72697810 !ruby/object:Gem::Requirement
15
+ name: aruba
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 0.9.2
21
+ version: 0.4.11
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *72697810
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 0.4.11
25
30
  - !ruby/object:Gem::Dependency
26
- name: rspec
27
- requirement: &72697580 !ruby/object:Gem::Requirement
31
+ name: guard-rspec
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ~>
31
36
  - !ruby/object:Gem::Version
32
- version: 2.8.0
37
+ version: 1.2.1
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *72697580
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 1.2.1
36
46
  - !ruby/object:Gem::Dependency
37
- name: aruba
38
- requirement: &72697350 !ruby/object:Gem::Requirement
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ~>
42
52
  - !ruby/object:Gem::Version
43
- version: 0.4.11
53
+ version: 0.9.2
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *72697350
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 0.9.2
62
+ - !ruby/object:Gem::Dependency
63
+ name: rspec
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 2.11.0
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 2.11.0
47
78
  description: Nrename lets you rename set of numbered files so that they can be sorted
48
79
  correctly in any shell or file manager.
49
80
  email:
@@ -61,9 +92,12 @@ files:
61
92
  - features/support/env.rb
62
93
  - lib/nrename.rb
63
94
  - lib/nrename/directory.rb
95
+ - lib/nrename/numbered_file.rb
64
96
  - lib/nrename/options.rb
97
+ - lib/nrename/runner.rb
65
98
  - lib/nrename/version.rb
66
99
  - spec/nrename/directory_spec.rb
100
+ - spec/nrename/numbered_file_spec.rb
67
101
  - spec/nrename/options_spec.rb
68
102
  - spec/spec_helper.rb
69
103
  homepage: https://github.com/vderyagin/nrename
@@ -79,6 +113,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
79
113
  - - ! '>='
80
114
  - !ruby/object:Gem::Version
81
115
  version: '0'
116
+ segments:
117
+ - 0
118
+ hash: 597873344998439750
82
119
  required_rubygems_version: !ruby/object:Gem::Requirement
83
120
  none: false
84
121
  requirements:
@@ -87,9 +124,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
87
124
  version: 1.3.6
88
125
  requirements: []
89
126
  rubyforge_project: nrename
90
- rubygems_version: 1.8.10
127
+ rubygems_version: 1.8.24
91
128
  signing_key:
92
129
  specification_version: 3
93
130
  summary: Command-line utility for renaming numbered files.
94
131
  test_files: []
95
- has_rdoc: