ceml 0.6.0 → 0.6.1

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.0
1
+ 0.6.1
data/ceml.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ceml}
8
- s.version = "0.6.0"
8
+ s.version = "0.6.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Joe Edelman"]
@@ -19,8 +19,9 @@ module CEML
19
19
  end
20
20
 
21
21
  def best_role_for candidate
22
+ # puts "confluence finding best role #{object_id} #{candidate[:id]} #{star}"
22
23
  winner = @roles_to_cast.max_by{ |role| role.affinity(candidate, star) }
23
- winner unless winner[0] == -1
24
+ winner unless winner.affinity(candidate, star)[0] == -1
24
25
  end
25
26
 
26
27
  def stage_with_candidate candidate
@@ -36,6 +37,7 @@ module CEML
36
37
  best_role = best_role_for(candidate)
37
38
  candidate[:roles] = best_role.name.to_sym
38
39
  best_role.casted << candidate
40
+ @star ||= candidate
39
41
  @dirty = true
40
42
  end
41
43
 
data/lib/ceml/driver.rb CHANGED
@@ -21,21 +21,25 @@ module CEML
21
21
  end
22
22
  alias_method :start, :with_incident
23
23
 
24
+ def log(s)
25
+ # puts s
26
+ end
27
+
24
28
  LOCATIONS = Hash.new{ |h,k| h[k] = [] }
25
29
  def ping script, candidate
26
30
  return unless script.fits? candidate
27
- candidate[:ts] = Time.now.utc.to_i
31
+ candidate[:ts] = CEML.clock
28
32
  script_id = script.text_value
29
33
 
30
34
  locs = LOCATIONS[script_id].group_by{ |l| l.stage_with_candidate(candidate) }
31
35
  if locs[:joinable]
32
- # puts "joining..."
36
+ log "joining..."
33
37
  first = locs[:joinable].shift
34
38
  first.push candidate
35
39
  push first.incident_id, nil, candidate
36
40
 
37
41
  elsif locs[:launchable]
38
- # puts "launching..."
42
+ log "launching..."
39
43
  first = locs[:launchable].shift
40
44
  first.push candidate
41
45
  cast = first.cast
@@ -43,18 +47,18 @@ module CEML
43
47
  (locs[:launchable] + (locs[:listable]||[])).each{ |l| l.rm *cast }
44
48
 
45
49
  elsif locs[:listable]
46
- # puts "listing..."
50
+ log "listing..."
47
51
  locs[:listable].each{ |l| l.push candidate }
48
52
 
49
53
  else
50
54
  c = Confluence.new(script)
51
55
  case c.stage_with_candidate(candidate)
52
56
  when :launchable
53
- # puts "start-launching..."
57
+ log "start-launching..."
54
58
  c.push candidate
55
59
  push nil, script, candidate
56
60
  when :listable
57
- # puts "start-listing..."
61
+ log "start-listing..."
58
62
  c.push candidate
59
63
  LOCATIONS[script_id] << c
60
64
  else raise "what?"
data/lib/ceml/incident.rb CHANGED
@@ -95,13 +95,12 @@ module CEML
95
95
  def finish; true; end
96
96
 
97
97
  def start_delay seconds
98
- this[:continue_at] = Time.now.utc.to_i + seconds
99
- cb :delay, seconds
98
+ this[:continue_at] = CEML.clock + seconds
100
99
  true
101
100
  end
102
101
 
103
102
  def complete_delay
104
- return false unless Time.now.utc.to_i >= this[:continue_at]
103
+ return false unless CEML.clock >= this[:continue_at]
105
104
  this.delete(:continue_at)
106
105
  true
107
106
  end
data/lib/ceml/role.rb CHANGED
@@ -28,7 +28,8 @@ module CEML
28
28
  return unless c_ll.distance_to(s_ll, :meters) <= c.radius
29
29
  end
30
30
  if c.timewindow
31
- return unless star.ts - candidate.ts <= c.timewindow
31
+ # puts "checking timewindow #{c.timewindow} #{candidate[:ts] - star[:ts]}"
32
+ return unless candidate[:ts] - star[:ts] <= c.timewindow
32
33
  end
33
34
  return true
34
35
  end
data/lib/ceml/script.rb CHANGED
@@ -1,8 +1,6 @@
1
1
  module CEML
2
2
  module Script
3
3
  extend Forwardable
4
- attr_writer :delegate
5
- def delegate; @delegate || CEML.delegate; end
6
4
 
7
5
  # ===========
8
6
  # = casting =
data/lib/ceml.rb CHANGED
@@ -16,8 +16,9 @@ require 'ceml/driver'
16
16
 
17
17
  module CEML
18
18
  extend self
19
- attr_accessor :delegate
20
- # @delegate = Delegate.new
19
+ @extra_seconds = 0
20
+ def clock; Time.now.utc.to_i + @extra_seconds; end
21
+ def incr_clock(s); @extra_seconds += s; end
21
22
  end
22
23
 
23
24
  module CEML
@@ -86,7 +86,7 @@ class TestIncident < Test::Unit::TestCase
86
86
  player :bill, :agent
87
87
  told :bill, /hello/
88
88
  silent :bill
89
- sleep 5
89
+ CEML.incr_clock 5
90
90
  roll
91
91
  told :bill, /goodbye/
92
92
  end
@@ -112,6 +112,29 @@ class TestIncident < Test::Unit::TestCase
112
112
  end
113
113
  end
114
114
 
115
+
116
+ def test_inside_timewindow
117
+ s = CEML.parse(:script, "await 2 new signups over 10s\ntell signups: thanks")
118
+ play do
119
+ ping s, :id => 'fred', :tags => ['new']
120
+ silent 'fred'
121
+ CEML.incr_clock 5
122
+ ping s, :id => 'betty', :tags => ['new']
123
+ told 'fred', /thanks/
124
+ end
125
+ end
126
+
127
+ def test_outside_timewindow
128
+ s = CEML.parse(:script, "await 2 new signups over 10s\ntell signups: thanks")
129
+ play do
130
+ ping s, :id => 'fred', :tags => ['new']
131
+ silent 'fred'
132
+ CEML.incr_clock 15
133
+ ping s, :id => 'betty', :tags => ['new']
134
+ silent 'fred'
135
+ end
136
+ end
137
+
115
138
  def test_await
116
139
  s = CEML.parse(:script, "await a,b,c\ntell a: foo\ntell b: bar\ntell c: baz")
117
140
  play do
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 6
8
- - 0
9
- version: 0.6.0
8
+ - 1
9
+ version: 0.6.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Joe Edelman
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-01-28 00:00:00 -08:00
17
+ date: 2011-01-28 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency