writer 0.0.3 → 0.0.4
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 +34 -3
- data/lib/writer/file_creator.rb +34 -0
- data/lib/writer/overwrite_prevention.rb +25 -0
- data/lib/writer/version.rb +1 -1
- data/lib/writer.rb +10 -41
- data/spec/writer_spec.rb +8 -0
- metadata +6 -4
data/README.md
CHANGED
@@ -1,10 +1,15 @@
|
|
1
1
|
# Writer
|
2
2
|
|
3
|
-
|
3
|
+
This gem adds a command line utility that writes a new file for you.
|
4
|
+
|
5
|
+
## Doesn't touch do that?
|
6
|
+
|
7
|
+
Yes, but with this gem you can simply type `wr` and it defaults to
|
8
|
+
a markdown file named after today's date.
|
4
9
|
|
5
10
|
## Installation
|
6
11
|
|
7
|
-
|
12
|
+
Create a bundler Gemfile and add this:
|
8
13
|
|
9
14
|
gem 'writer'
|
10
15
|
|
@@ -18,10 +23,36 @@ Or install it yourself as:
|
|
18
23
|
|
19
24
|
## Usage
|
20
25
|
|
21
|
-
|
26
|
+
```
|
27
|
+
$ wr
|
28
|
+
#=> Creates a MarkDown file named after today's date
|
29
|
+
## e.g. `2012-01Jan-03.md`
|
30
|
+
|
31
|
+
$ wr hello
|
32
|
+
#=> Creates a file named `hello`
|
33
|
+
|
34
|
+
$ wr hello world
|
35
|
+
#=> Creates a file named `hello` with the content `world`
|
36
|
+
```
|
37
|
+
|
38
|
+
## Use a template
|
39
|
+
|
40
|
+
The Writer will copy a template file's contents into your new file
|
41
|
+
if you configure the template file's path.
|
42
|
+
|
43
|
+
Add `config/writer.yml` to the root directory of your project or journal
|
44
|
+
|
45
|
+
Create a file named whatever you want, the example uses `.template`
|
46
|
+
in the project root
|
47
|
+
|
48
|
+
```yml
|
49
|
+
template_path: .template
|
50
|
+
```
|
22
51
|
|
23
52
|
## Contributing
|
24
53
|
|
54
|
+
Please provide a spec covering your feature or bug fix, thank you!
|
55
|
+
|
25
56
|
1. Fork it
|
26
57
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
58
|
3. Commit your changes (`git commit -am 'Added some feature'`)
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require "writer/overwrite_prevention"
|
2
|
+
|
3
|
+
module Writer
|
4
|
+
class FileCreator
|
5
|
+
class << self
|
6
|
+
attr_accessor :name, :content
|
7
|
+
|
8
|
+
def create!(name, content)
|
9
|
+
@name = OverwritePrevention.adjust(name)
|
10
|
+
@content = content
|
11
|
+
|
12
|
+
create_file
|
13
|
+
return file
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
def create_file
|
18
|
+
File.open(name, 'w') do |f|
|
19
|
+
f.puts content || template
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def template
|
24
|
+
if Writer.template_path
|
25
|
+
File.open(Writer.template_path).read
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def file
|
30
|
+
File.open(name, 'r')
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Writer
|
2
|
+
class OverwritePrevention
|
3
|
+
def self.adjust(name)
|
4
|
+
count = 1
|
5
|
+
|
6
|
+
while File.exists?(name)
|
7
|
+
name = append_count(name, count +=1)
|
8
|
+
end
|
9
|
+
|
10
|
+
name
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.append_count(name, count)
|
14
|
+
if (split = name.split('.')).length > 1
|
15
|
+
ext = split.last
|
16
|
+
split.delete(ext)
|
17
|
+
name = split.join('.')
|
18
|
+
end
|
19
|
+
|
20
|
+
name = name.gsub(/--\d$/,'')
|
21
|
+
|
22
|
+
[name + "--#{count}", '.', ext].join
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/writer/version.rb
CHANGED
data/lib/writer.rb
CHANGED
@@ -1,65 +1,34 @@
|
|
1
1
|
require "date"
|
2
2
|
require "writer/configuration"
|
3
3
|
require "writer/version"
|
4
|
+
require "writer/file_creator"
|
4
5
|
|
5
6
|
module Writer
|
6
7
|
class << self
|
7
8
|
def write!(name = nil, content = nil)
|
8
|
-
name
|
9
|
-
|
10
|
-
create_file(content)
|
11
|
-
File.open(filename, 'r')
|
9
|
+
name ||= default_filename
|
10
|
+
FileCreator.create!(name, content)
|
12
11
|
end
|
13
12
|
|
14
13
|
def configure
|
15
|
-
|
16
|
-
yield(@config)
|
14
|
+
yield(config)
|
17
15
|
end
|
18
16
|
|
19
|
-
|
20
|
-
def
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
end
|
25
|
-
@filename = name
|
26
|
-
end
|
27
|
-
|
28
|
-
def create_file(content = nil)
|
29
|
-
File.open(filename, 'w') do |f|
|
30
|
-
f.puts content || template
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def append_count(name, count)
|
35
|
-
if (split = name.split('.')).length > 1
|
36
|
-
ext = split.last
|
37
|
-
split.delete(ext)
|
38
|
-
name = split.join
|
39
|
-
end
|
40
|
-
|
41
|
-
name = name.gsub(/--\d$/,'')
|
42
|
-
|
43
|
-
[name + "--#{count}", '.', ext].join
|
17
|
+
# attempt delegation to config
|
18
|
+
def method_missing(name, *args)
|
19
|
+
return config.send(name, *args)
|
20
|
+
rescue
|
21
|
+
super
|
44
22
|
end
|
45
23
|
|
24
|
+
private
|
46
25
|
def default_filename
|
47
26
|
date = Date.today
|
48
27
|
date.strftime('%Y-%m%b-%d.md')
|
49
28
|
end
|
50
29
|
|
51
|
-
def template
|
52
|
-
if config.template_path
|
53
|
-
File.open(config.template_path).read
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
30
|
def config
|
58
31
|
@config ||= Configuration.new
|
59
32
|
end
|
60
|
-
|
61
|
-
def filename
|
62
|
-
@filename
|
63
|
-
end
|
64
33
|
end
|
65
34
|
end
|
data/spec/writer_spec.rb
CHANGED
@@ -29,6 +29,12 @@ describe Writer do
|
|
29
29
|
File.open('2012-01Jan-03--3.md')
|
30
30
|
end
|
31
31
|
|
32
|
+
it "preserves periods" do
|
33
|
+
Writer.write!('some.jquery.file')
|
34
|
+
file = Writer.write!('some.jquery.file')
|
35
|
+
File.basename(file).should == 'some.jquery--2.file'
|
36
|
+
end
|
37
|
+
|
32
38
|
it "creates the file with your custom name" do
|
33
39
|
filename = "My custom filename.txt"
|
34
40
|
Writer.write!(filename)
|
@@ -54,6 +60,8 @@ def cleanup_files
|
|
54
60
|
File.delete('2012-01Jan-03--3.md')
|
55
61
|
File.delete('2012-01Jan-03--4.md')
|
56
62
|
File.delete('2012-01Jan-03--5.md')
|
63
|
+
File.delete('some.jquery.file')
|
64
|
+
File.delete('some.jquery--2.file')
|
57
65
|
File.delete('.template')
|
58
66
|
File.delete('My custom filename.txt')
|
59
67
|
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.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70185578605260 !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: *
|
24
|
+
version_requirements: *70185578605260
|
25
25
|
description: Easily start a new file to write in.
|
26
26
|
email:
|
27
27
|
- joe@joesak.com
|
@@ -40,6 +40,8 @@ files:
|
|
40
40
|
- bin/wr
|
41
41
|
- lib/writer.rb
|
42
42
|
- lib/writer/configuration.rb
|
43
|
+
- lib/writer/file_creator.rb
|
44
|
+
- lib/writer/overwrite_prevention.rb
|
43
45
|
- lib/writer/version.rb
|
44
46
|
- spec/.gitkeep
|
45
47
|
- spec/writer_spec.rb
|