ev 0.0.2 → 0.0.3
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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a56fef9501146cb7262425b5a4c11cedfe4f2b62
|
4
|
+
data.tar.gz: 3c10897dbf2591a87eaa2b9bc680305ecbdab9f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b910324836221efdbefb585f825596fbc171d094e893a7d74868d0b787c83e8b30969deddee92a456800fa5fbfd8da6082f2dec73cdf10bda21a7eaaea40d00
|
7
|
+
data.tar.gz: 1f976c2ef91d187a68c6f0de7f6a7bfcf6870a328c3e877ca8922142814eebabcd0fa41865e3dbaa9da1a82ba01a308a98a2c874a2c09264803e308b7254f1f3
|
data/README.md
CHANGED
@@ -1,2 +1,78 @@
|
|
1
1
|
# ev
|
2
|
-
|
2
|
+
|
3
|
+
```ruby
|
4
|
+
require 'ev'
|
5
|
+
require 'set'
|
6
|
+
|
7
|
+
ItemAdded = Struct.new(:name)
|
8
|
+
ItemRemoved = Struct.new(:name)
|
9
|
+
|
10
|
+
class TodoList < EV::EventSource
|
11
|
+
def add_item(name)
|
12
|
+
raise "Item already added" if items.include?(name)
|
13
|
+
apply(ItemAdded.new(name))
|
14
|
+
end
|
15
|
+
|
16
|
+
def remove_item(name)
|
17
|
+
raise "Item cannot be removed because it does not exist" unless items.include?(name)
|
18
|
+
apply(ItemRemoved.new(name))
|
19
|
+
end
|
20
|
+
|
21
|
+
protected
|
22
|
+
|
23
|
+
def items
|
24
|
+
@items ||= Set.new
|
25
|
+
end
|
26
|
+
|
27
|
+
def handle(event)
|
28
|
+
case event
|
29
|
+
when ItemAdded
|
30
|
+
items << event.name
|
31
|
+
when ItemRemoved
|
32
|
+
items.delete(event.name)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def debug
|
38
|
+
begin
|
39
|
+
es = yield
|
40
|
+
puts " dirty? #{es.dirty?.inspect}"
|
41
|
+
puts " version #{es.version}"
|
42
|
+
puts " changes #{es.changes.inspect}"
|
43
|
+
rescue => e
|
44
|
+
puts " ERROR: #{e.message}"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
todo_list = nil
|
49
|
+
|
50
|
+
debug do
|
51
|
+
puts "Initialization:"
|
52
|
+
todo_list = TodoList.new_from_events([ItemAdded.new("Buy a thing"), ItemAdded.new("Clean room")])
|
53
|
+
end
|
54
|
+
|
55
|
+
debug do
|
56
|
+
puts "Adding \"Take back library book\":"
|
57
|
+
todo_list.add_item("Take back library book")
|
58
|
+
todo_list
|
59
|
+
end
|
60
|
+
|
61
|
+
debug do
|
62
|
+
puts "Commit:"
|
63
|
+
todo_list.commit
|
64
|
+
todo_list
|
65
|
+
end
|
66
|
+
|
67
|
+
debug do
|
68
|
+
puts "Trying to add \"Take back library book\" again:"
|
69
|
+
todo_list.add_item("Take back library book")
|
70
|
+
todo_list
|
71
|
+
end
|
72
|
+
|
73
|
+
debug do
|
74
|
+
puts "Trying to remove \"Something else\" again:"
|
75
|
+
todo_list.remove_item("Something else")
|
76
|
+
todo_list
|
77
|
+
end
|
78
|
+
```
|
data/lib/ev/version.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require_relative '../../../lib/ev/
|
2
|
+
require_relative '../../../lib/ev/event_source'
|
3
3
|
|
4
4
|
module EV
|
5
|
-
class DummyModel <
|
5
|
+
class DummyModel < EventSource
|
6
6
|
def handle(event)
|
7
7
|
end
|
8
8
|
end
|
9
9
|
|
10
|
-
describe
|
10
|
+
describe EventSource do
|
11
11
|
describe ".new_from_events" do
|
12
|
-
subject {
|
12
|
+
subject { EventSource }
|
13
13
|
|
14
14
|
it "does not call new" do
|
15
15
|
expect(subject).to_not receive(:new)
|
@@ -18,7 +18,7 @@ module EV
|
|
18
18
|
|
19
19
|
describe "with events" do
|
20
20
|
before do
|
21
|
-
root =
|
21
|
+
root = EventSource.new
|
22
22
|
expect(root).to receive(:handle).twice
|
23
23
|
expect(subject).to receive(:allocate).and_return(root)
|
24
24
|
end
|
@@ -40,7 +40,7 @@ module EV
|
|
40
40
|
end
|
41
41
|
|
42
42
|
describe "#apply" do
|
43
|
-
subject {
|
43
|
+
subject { EventSource.new }
|
44
44
|
before do
|
45
45
|
@event = {foo: :bar}
|
46
46
|
expect(subject).to receive(:handle).with(@event)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ev
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Conger-Eldeen
|
@@ -39,9 +39,9 @@ files:
|
|
39
39
|
- README.md
|
40
40
|
- ev.gemspec
|
41
41
|
- lib/ev.rb
|
42
|
-
- lib/ev/
|
42
|
+
- lib/ev/event_source.rb
|
43
43
|
- lib/ev/version.rb
|
44
|
-
- spec/lib/
|
44
|
+
- spec/lib/ev/event_source_spec.rb
|
45
45
|
- spec/spec_helper.rb
|
46
46
|
homepage: https://www.github.com/mceldeen/ev
|
47
47
|
licenses: []
|