nrename 0.1.0 → 0.2.0

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.
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: