writer 0.2.0 → 0.3.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.
@@ -27,11 +27,12 @@ module Writer
27
27
  end
28
28
 
29
29
  def prevent_overwrite(name, base = nil, ext = nil)
30
+ separator = separator_for(name, base)
30
31
  to_fix = base || name
31
32
  count = 1
32
33
 
33
34
  while File.exists?(name)
34
- name = append_count(to_fix, count += 1)
35
+ name = append_count(to_fix, separator, count += 1)
35
36
  name << ".#{ext}" if base
36
37
  end
37
38
 
@@ -39,9 +40,19 @@ module Writer
39
40
  end
40
41
 
41
42
  private
42
- def append_count(name, count)
43
- name = name.gsub(/--\d*$/, '')
44
- [name, "--", count].join
43
+ def append_count(name, separator, count)
44
+ basename = name.gsub(/(--|\.)\d*$/, '')
45
+ zero_pad = count < 10 ? 0 : nil
46
+
47
+ [basename, separator, zero_pad, count].join
48
+ end
49
+
50
+ def separator_for(name, base = nil)
51
+ if base || name.include?('.')
52
+ "."
53
+ else
54
+ "--"
55
+ end
45
56
  end
46
57
  end
47
58
  end
@@ -1,3 +1,3 @@
1
1
  module Writer
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
data/spec/writer_spec.rb CHANGED
@@ -21,12 +21,21 @@ describe Writer do
21
21
  file.read.should == "\n"
22
22
  end
23
23
 
24
+ it "prevents overwriting" do
25
+ 50.times do
26
+ Writer.write!
27
+ end
28
+
29
+ File.open('2012-01Jan-03.02.md')
30
+ File.open('2012-01Jan-03.52.md')
31
+ end
32
+
24
33
  it "plays well with no dots" do
25
34
  file = Writer.write!('nodots')
26
35
  File.basename(file).should == 'nodots'
27
36
 
28
37
  file = Writer.write!('nodots')
29
- File.basename(file).should == 'nodots--2'
38
+ File.basename(file).should == 'nodots--02'
30
39
  end
31
40
 
32
41
  it "plays well with a dot at the end" do
@@ -34,7 +43,7 @@ describe Writer do
34
43
  File.basename(file).should == 'dot.'
35
44
 
36
45
  file = Writer.write!('dot.')
37
- File.basename(file).should == 'dot--2.'
46
+ File.basename(file).should == 'dot.02.'
38
47
  end
39
48
 
40
49
  it "plays well with a dot at the beginning" do
@@ -42,21 +51,13 @@ describe Writer do
42
51
  File.basename(file).should == '.dot'
43
52
 
44
53
  file = Writer.write!('.dot')
45
- File.basename(file).should == '.dot--2'
54
+ File.basename(file).should == '.dot.02'
46
55
  end
47
56
 
48
57
  it "plays well with multiple dots" do
49
58
  Writer.write!('some.jquery.file')
50
59
  file = Writer.write!('some.jquery.file')
51
- File.basename(file).should == 'some.jquery--2.file'
52
- end
53
-
54
- it "prevents overwriting" do
55
- Writer.write!
56
- Writer.write!
57
-
58
- File.open('2012-01Jan-03--2.md')
59
- File.open('2012-01Jan-03--3.md')
60
+ File.basename(file).should == 'some.jquery.02.file'
60
61
  end
61
62
 
62
63
  it "creates the file with your custom name" do
@@ -80,18 +81,17 @@ end
80
81
 
81
82
  def cleanup_files
82
83
  File.delete('2012-01Jan-03.md')
83
- File.delete('2012-01Jan-03--2.md')
84
- File.delete('2012-01Jan-03--3.md')
85
- File.delete('2012-01Jan-03--4.md')
86
- File.delete('2012-01Jan-03--5.md')
84
+ 52.times do |n|
85
+ File.delete("2012-01Jan-03.#{'0' if n < 8}#{n + 2}.md")
86
+ end
87
87
  File.delete('nodots')
88
- File.delete('nodots--2')
89
88
  File.delete('dot.')
90
- File.delete('dot--2.')
89
+ File.delete('dot.02.')
91
90
  File.delete('some.jquery.file')
92
- File.delete('some.jquery--2.file')
91
+ File.delete('some.jquery.02.file')
93
92
  File.delete('.template')
94
93
  File.delete('My custom filename.txt')
95
94
  File.delete('.dot')
96
- File.delete('.dot--2')
95
+ File.delete('.dot.02')
96
+ File.delete('nodots--2')
97
97
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: writer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-07-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70238314665740 !ruby/object:Gem::Requirement
16
+ requirement: &70124302849860 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70238314665740
24
+ version_requirements: *70124302849860
25
25
  description: Easily start a new file to write in.
26
26
  email:
27
27
  - joe@joesak.com