set_sync 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/set_sync.rb +45 -6
- metadata +2 -2
data/lib/set_sync.rb
CHANGED
@@ -1,13 +1,39 @@
|
|
1
1
|
require 'set'
|
2
2
|
class SetSync
|
3
|
-
attr_accessor :local_binding, :remote_binding
|
4
3
|
|
4
|
+
class << self
|
5
|
+
def local_binding(binding=nil)
|
6
|
+
if binding
|
7
|
+
@local_binding = binding
|
8
|
+
else
|
9
|
+
@local_binding
|
10
|
+
end
|
11
|
+
end
|
12
|
+
def remote_binding(binding=nil)
|
13
|
+
if binding
|
14
|
+
@remote_binding = binding
|
15
|
+
else
|
16
|
+
@remote_binding
|
17
|
+
end
|
18
|
+
end
|
19
|
+
def on_enter(&blk)
|
20
|
+
blk ? @on_enter=blk : @on_enter
|
21
|
+
end
|
22
|
+
def on_exit(&blk)
|
23
|
+
blk ? @on_exit=blk : @on_enter
|
24
|
+
end
|
25
|
+
def on_update(&blk)
|
26
|
+
blk ? @on_update=blk : @on_update
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
attr_accessor :local_binding, :remote_binding
|
5
31
|
def initialize(local, remote, options={}, &blk)
|
6
32
|
@local = local
|
7
33
|
@remote = remote
|
8
34
|
|
9
|
-
@local_binding = options[:local_binding] || :id
|
10
|
-
@remote_binding = options[:remote_binding] || :id
|
35
|
+
@local_binding = options[:local_binding] || self.class.local_binding || :id
|
36
|
+
@remote_binding = options[:remote_binding] || self.class.remote_binding || :id
|
11
37
|
|
12
38
|
sync_block(blk) if blk
|
13
39
|
end
|
@@ -53,22 +79,35 @@ class SetSync
|
|
53
79
|
|
54
80
|
def do_entering
|
55
81
|
entering.each do |binding|
|
56
|
-
|
82
|
+
do_enter remote_hash[binding]
|
57
83
|
end
|
58
84
|
end
|
59
85
|
|
60
86
|
def do_exiting
|
61
87
|
exiting.each do |binding|
|
62
|
-
|
88
|
+
do_exit local_hash[binding]
|
63
89
|
end
|
64
90
|
end
|
65
91
|
|
66
92
|
def do_updating
|
67
93
|
updating.each do |binding|
|
68
|
-
|
94
|
+
do_update local_hash[binding], remote_hash[binding]
|
69
95
|
end
|
70
96
|
end
|
71
97
|
|
98
|
+
def do_enter(remote)
|
99
|
+
blk = @on_enter || self.class.on_enter
|
100
|
+
blk.call remote
|
101
|
+
end
|
102
|
+
def do_exit(local)
|
103
|
+
blk = @on_exit || self.class.on_exit
|
104
|
+
blk.call local
|
105
|
+
end
|
106
|
+
def do_update(local, remote)
|
107
|
+
blk = @on_update || self.class.on_update
|
108
|
+
blk.call local, remote
|
109
|
+
end
|
110
|
+
|
72
111
|
def on_enter(&blk)
|
73
112
|
@on_enter = blk
|
74
113
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: set_sync
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
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-
|
12
|
+
date: 2012-11-01 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Syncs sets
|
15
15
|
email: phil@latentflip.com
|