Dahistory 0.2.2 → 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.
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 da99
2
+
3
+ Permission is hereby granted, free of charge, to any person
4
+ obtaining a copy of this software and associated documentation
5
+ files (the "Software"), to deal in the Software without
6
+ restriction, including without limitation the rights to use,
7
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the
9
+ Software is furnished to do so, subject to the following
10
+ conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -46,3 +46,17 @@ Both **def Dahistory** and **class Dahistory** are defined.
46
46
  All the code is in one file and less than 150 lines:
47
47
  [lib/Dahistory.rb](https://github.com/da99/Dahistory/blob/master/lib/Dahistory.rb)
48
48
 
49
+ Run Tests
50
+ ---------
51
+
52
+ git clone git@github.com:da99/Dahistory.git
53
+ cd Dahistory
54
+ bundle update
55
+ bundle exec bacon spec/main.rb
56
+
57
+ "I hate writing."
58
+ -----------------------------
59
+
60
+ If you know of existing software that makes the above redundant,
61
+ please tell me. The last thing I want to do is maintain code.
62
+
data/lib/Dahistory.rb CHANGED
@@ -21,6 +21,7 @@ class Dahistory
21
21
  file!(file_path) if file_path
22
22
  dirs './history'
23
23
  pending_dir './pending'
24
+ @on_raise_pending = nil
24
25
  yield(self) if block_given?
25
26
  end
26
27
 
@@ -38,6 +39,10 @@ class Dahistory
38
39
  @pending_dir = File.expand_path(dir)
39
40
  end
40
41
 
42
+ def on_raise_pending &blok
43
+ @on_raise_pending = blok
44
+ end
45
+
41
46
  #
42
47
  # My alternative to :attr_accessors:
43
48
  #
@@ -52,7 +57,7 @@ class Dahistory
52
57
  eval %~
53
58
  def #{name} *args, &blok
54
59
 
55
- if args.empty?
60
+ if args.empty? && !block_given?
56
61
 
57
62
  unless instance_variable_defined?(:@#{name})
58
63
  raise ArgumentError, "Instance variable not set: @#{name}"
@@ -88,6 +93,7 @@ class Dahistory
88
93
 
89
94
  if !old
90
95
  File.write(backup_file, content) unless self.class.find_file_copy(file, pending_dir)
96
+ on_raise_pending.call if on_raise_pending
91
97
  raise Pending, backup_file
92
98
  end
93
99
 
@@ -97,7 +103,7 @@ class Dahistory
97
103
 
98
104
  include Base
99
105
 
100
- class << self
106
+ module Class_Methods
101
107
 
102
108
  def find_file_copy file, *raw_dirs
103
109
  standard = File.read(file).gsub("\r", "")
@@ -119,7 +125,9 @@ class Dahistory
119
125
  found
120
126
  end # === def
121
127
 
122
- end # === class
128
+ end # === module Class_Methods
129
+
130
+ extend Class_Methods
123
131
 
124
132
  end # === class Dahistory
125
133
 
@@ -1,3 +1,3 @@
1
1
  class Dahistory
2
- VERSION = "0.2.2"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -46,6 +46,24 @@ describe "Dahistory: pending file" do
46
46
  Dir.glob("pending/*").size.should == 1
47
47
  }
48
48
  end
49
+
50
+ it "executes :on_raise_pending" do
51
+ file = "files/#{rand 1000}.txt"
52
+ content = rand(1000).to_s
53
+ target = nil
54
+
55
+ chdir {
56
+ File.write(file, content)
57
+ begin
58
+ Dahistory { |o|
59
+ o.file file
60
+ o.on_raise_pending { target = "done" }
61
+ }
62
+ rescue Dahistory::Pending => e
63
+ end
64
+ target.should == "done"
65
+ }
66
+ end
49
67
 
50
68
  end # === Dahistory: pending file
51
69
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Dahistory
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-21 00:00:00.000000000 Z
12
+ date: 2012-03-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bacon
@@ -86,6 +86,7 @@ files:
86
86
  - .gitignore
87
87
  - Dahistory.gemspec
88
88
  - Gemfile
89
+ - LICENSE
89
90
  - README.md
90
91
  - Rakefile
91
92
  - lib/Dahistory.rb