projectsimulator 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7498ee0529a8c6caa6f82119db104e656f17da58655bb6258fbca979af7819d8
4
- data.tar.gz: 66fe74f176dfe6aac2c00de2c2451dea44955be5a7c88bb1e8369207bc8ce787
3
+ metadata.gz: 024bbe43574b19e2cef1d32997464cb570ae9828559842a47980069503d4ccd4
4
+ data.tar.gz: ac1aac4437f90007c016ef61e7b6bf89673d6d1310929e9557e1f334e730198d
5
5
  SHA512:
6
- metadata.gz: 2bb64a67834ac13c34698f12ccd95a98b9f7dd8c70b313623c6e3c1b164c3d68e0d56d395113e29aac7b697c38e4b0fbbe2c0da5baedb5015c52d8f84b5edf03
7
- data.tar.gz: 4a11a714877afd064f3b414662a9d19ad2dd34f7e86eaab63cb43e9fb54c13f797fa0d442029bfbfb11fc4bf4faaaf24ca0c713147180444b3b4c4516327b86f
6
+ metadata.gz: c18c8f2422750ffa91db344a0d9845633be16d23447599e9c73404bf2203335a110f0fa56f45cf5e552aa2ef66740c18d4d1de3ee9cdbca72d4602aaa203528b
7
+ data.tar.gz: 349887e64fcd35c9bfadbb113e52cea58a7f781b58896e1888dd9763e064d9b38a4917e6622f9bee7334a1ebb186d1abda4048bfa4c154b448a6953507000892
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -162,15 +162,31 @@ module ProjectSimulator
162
162
  @messages = []
163
163
 
164
164
  h = {motion: MotionTrigger}
165
- if @triggers.any? {|x| x.is_a? h[trigger.to_sym] and x.match } and \
166
- @constraints.all?(&:match) then
165
+
166
+ if @triggers.any? {|x| x.is_a? h[trigger.to_sym] and x.match } then
167
+
168
+ if @constraints.all?(&:match) then
167
169
 
168
- @messages = @actions.map(&:call)
170
+ @messages = @actions.map(&:call)
171
+
172
+ else
173
+
174
+ puts 'else reset?' if @debug
175
+ a = @constraints.select {|x| x.is_a? FrequencyConstraint }
176
+ puts 'a:' + a.inspect if @debug
177
+ a.each {|x| x.reset if x.counter > 0 }
178
+ return false
179
+ end
169
180
 
170
181
  end
171
182
 
172
183
  end
173
-
184
+
185
+ def time=(val)
186
+ @time = val
187
+ @constraints.each {|x| x.time = val if x.is_a? TimeConstraint }
188
+ end
189
+
174
190
  end
175
191
 
176
192
  class Action
@@ -291,6 +307,10 @@ module ProjectSimulator
291
307
  get /^(after .*)/i do |s|
292
308
  TimeConstraint.new(s, time: @time)
293
309
  end
310
+
311
+ get /^once only/i do |s|
312
+ FrequencyConstraint.new(1, debug: @debug)
313
+ end
294
314
 
295
315
  end
296
316
 
@@ -340,15 +360,46 @@ module ProjectSimulator
340
360
 
341
361
  end
342
362
 
343
- class TimeConstraint
363
+ class TimeConstraint
344
364
 
345
- attr_reader :match
365
+ attr_accessor :time
346
366
 
347
367
  def initialize(times, time: nil)
348
- @match = ChronicBetween.new(times).within?(time)
368
+ @times, @time = times, time
369
+ end
370
+
371
+ def match()
372
+ ChronicBetween.new(@times).within?(@time)
349
373
  end
350
374
 
351
- end
375
+ end
376
+
377
+ class FrequencyConstraint
378
+
379
+ def initialize(freq, debug: false)
380
+ @freq, @debug = freq, debug
381
+ @counter = 0
382
+ end
383
+
384
+ def counter()
385
+ @counter
386
+ end
387
+
388
+ def increment()
389
+ @counter += 1
390
+ end
391
+
392
+ def match()
393
+ @counter < @freq
394
+ end
395
+
396
+ def reset()
397
+ puts 'resetting' if @debug
398
+ @foo = 0
399
+ @counter = 0
400
+ end
401
+
402
+ end
352
403
 
353
404
  class Controller
354
405
 
@@ -366,16 +417,29 @@ module ProjectSimulator
366
417
 
367
418
  end
368
419
 
420
+ def time=(val)
421
+ @time = val
422
+ @events.each {|event| event.time = val }
423
+ end
424
+
369
425
  def trigger(name, location: '')
370
426
 
371
427
  events = @events.select do |event|
372
428
 
373
429
  puts 'event: ' + event.inspect if @debug
374
430
 
375
- event.match(trigger: 'motion', location: location='kitchen')
431
+ event.match(trigger: 'motion', location: location)
376
432
 
377
433
  end
378
434
 
435
+ puts 'events: ' + events.inspect if @debug
436
+
437
+ events.each do |event|
438
+ c = event.constraints.select {|x| x.is_a? FrequencyConstraint }
439
+ puts 'c:' + c.inspect
440
+ c.each(&:increment)
441
+ end
442
+
379
443
  events.flat_map(&:messages)
380
444
 
381
445
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: projectsimulator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -35,7 +35,7 @@ cert_chain:
35
35
  2GrtfOXGVOS+2jvmCQC6vU+ew9WBxiDUbebI95TeTwMs2o0cs3IASXX5rIn4TPcz
36
36
  SCccB3fVg2yfsy5DivaWaZwg
37
37
  -----END CERTIFICATE-----
38
- date: 2020-05-06 00:00:00.000000000 Z
38
+ date: 2020-05-07 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: rowx
metadata.gz.sig CHANGED
Binary file