openhab-scripting 4.32.7 → 4.33.0

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: 1741788eaf0826f7b5e2c69935c96b21399771b3332a89debc77992c4ef687d0
4
- data.tar.gz: b1200a71458efe21d389631bc29d2ef7d073ae5128706009a12b9a35af559bd3
3
+ metadata.gz: 806613696649b2b84a4dd23339f58c9e25dff4a9834c5fa952b50effd915307a
4
+ data.tar.gz: 6faf4c72cae568ae889d188b73040ae74c73f57864b30588d57fdce097f37420
5
5
  SHA512:
6
- metadata.gz: 9317316f15b212005f6f9cb4013c6fb80739b8c427a8685b0610d5c6127a1ed676584f62258efe38a757966f4c9e51f61064a70a486ec2bd4d0e98c52dbe9255
7
- data.tar.gz: d28a7872616e92eefa43e198f8211ee6ccb4408f418bb942ea82b6a8c9af572f9d6adc2e8fe929d8a2ba5bff19138f238be0e7951f75bf9567800e5681c68381
6
+ metadata.gz: '026014989011c7cc84fe58d783766a8a48ee9d4da002ca6724010bbcd873ed26484934c9a6bfc232fe71f073d51e5589fa583e1e621fa29d9c1b4601dcdceedd'
7
+ data.tar.gz: 9a75b467b814a87bb0efcb10baeed5700a28fd81423f0d87124e072f102280e53688fc2ef8cdea06820dfb4008d0bffefa1c3d250b759c177c8f1ad591342491
@@ -50,15 +50,17 @@ module OpenHAB
50
50
  # If +ensure_states+ is active (by block or chained method), then
51
51
  # check if this item is in the command's state before actually
52
52
  # sending the command
53
- def command(command)
54
- return super unless Thread.current[:ensure_states]
53
+ %i[command update].each do |ensured_method|
54
+ define_method(ensured_method) do |command|
55
+ return super(command) unless Thread.current[:ensure_states]
55
56
 
56
- logger.trace do
57
- "#{name} ensure #{command}, format_type_pre: #{format_type_pre(command)}, current state: #{state}"
58
- end
59
- return if state == format_type_pre(command)
57
+ logger.trace do
58
+ "#{name} ensure #{command}, format_type_pre: #{format_type_pre(command)}, current state: #{state}"
59
+ end
60
+ return if state == format_type_pre(command)
60
61
 
61
- super
62
+ super(command)
63
+ end
62
64
  end
63
65
  alias << command
64
66
  end
@@ -10,7 +10,7 @@ module OpenHAB
10
10
  #
11
11
  # @author Brian O'Connell
12
12
  # @since 2.0.0
13
- class ReentrantTimer < Timers::Timer
13
+ class ReentrantTimer < Timer
14
14
  include OpenHAB::Log
15
15
 
16
16
  attr_reader :id, :reentrant_id
@@ -8,114 +8,109 @@ require 'openhab/core/thread_local'
8
8
 
9
9
  module OpenHAB
10
10
  module DSL
11
- #
12
- # Provides access to and ruby wrappers around OpenHAB timers
13
- #
14
- module Timers
15
- java_import org.openhab.core.model.script.actions.ScriptExecution
16
- java_import java.time.ZonedDateTime
11
+ java_import org.openhab.core.model.script.actions.ScriptExecution
12
+ java_import java.time.ZonedDateTime
17
13
 
18
- # Ruby wrapper for OpenHAB Timer
19
- # This class implements delegator to delegate methods to the OpenHAB timer
20
- #
21
- # @author Brian O'Connell
22
- # @since 2.0.0
23
- class Timer < SimpleDelegator
24
- include OpenHAB::Log
25
- include OpenHAB::Core::ThreadLocal
26
- extend Forwardable
14
+ # Ruby wrapper for OpenHAB Timer
15
+ # This class implements delegator to delegate methods to the OpenHAB timer
16
+ #
17
+ # @author Brian O'Connell
18
+ # @since 2.0.0
19
+ class Timer < SimpleDelegator
20
+ include OpenHAB::Log
21
+ include OpenHAB::Core::ThreadLocal
22
+ extend Forwardable
27
23
 
28
- def_delegator :@timer, :has_terminated, :terminated?
24
+ def_delegator :@timer, :has_terminated, :terminated?
29
25
 
30
- #
31
- # Create a new Timer Object
32
- #
33
- # @param [Duration] duration Duration until timer should fire
34
- # @param [Block] block Block to execute when timer fires
35
- #
36
- # rubocop: disable Metrics/MethodLength
37
- def initialize(duration:, thread_locals: {}, &block)
38
- @duration = duration
39
- @thread_locals = thread_locals
26
+ #
27
+ # Create a new Timer Object
28
+ #
29
+ # @param [Duration] duration Duration until timer should fire
30
+ # @param [Block] block Block to execute when timer fires
31
+ #
32
+ # rubocop: disable Metrics/MethodLength
33
+ def initialize(duration:, thread_locals: {}, &block)
34
+ @duration = duration
35
+ @thread_locals = thread_locals
40
36
 
41
- # A semaphore is used to prevent a race condition in which calling the block from the timer thread
42
- # occurs before the @timer variable can be set resulting in @timer being nil
43
- semaphore = Mutex.new
37
+ # A semaphore is used to prevent a race condition in which calling the block from the timer thread
38
+ # occurs before the @timer variable can be set resulting in @timer being nil
39
+ semaphore = Mutex.new
44
40
 
45
- semaphore.synchronize do
46
- @timer = ScriptExecution.createTimer(
47
- ZonedDateTime.now.plus(to_duration(@duration)), timer_block(semaphore, &block)
48
- )
49
- @rule_timers = Thread.current[:rule_timers]
50
- super(@timer)
51
- Timers.timer_manager.add(self)
52
- end
41
+ semaphore.synchronize do
42
+ @timer = ScriptExecution.createTimer(
43
+ ZonedDateTime.now.plus(to_duration(@duration)), timer_block(semaphore, &block)
44
+ )
45
+ @rule_timers = Thread.current[:rule_timers]
46
+ super(@timer)
47
+ Timers.timer_manager.add(self)
53
48
  end
54
- # rubocop: enable Metrics/MethodLength
49
+ end
50
+ # rubocop: enable Metrics/MethodLength
55
51
 
56
- #
57
- # Reschedule timer
58
- #
59
- # @param [Duration] duration
60
- #
61
- # @return [Timer] Rescheduled timer instances
62
- #
63
- def reschedule(duration = nil)
64
- duration ||= @duration
52
+ #
53
+ # Reschedule timer
54
+ #
55
+ # @param [Duration] duration
56
+ #
57
+ # @return [Timer] Rescheduled timer instances
58
+ #
59
+ def reschedule(duration = nil)
60
+ duration ||= @duration
65
61
 
66
- Timers.timer_manager.add(self)
67
- @timer.reschedule(ZonedDateTime.now.plus(to_duration(duration)))
68
- end
62
+ Timers.timer_manager.add(self)
63
+ @timer.reschedule(ZonedDateTime.now.plus(to_duration(duration)))
64
+ end
69
65
 
70
- #
71
- # Cancel timer
72
- #
73
- # @return [Boolean] True if cancel was successful, false otherwise
74
- #
75
- def cancel
76
- Timers.timer_manager.delete(self)
77
- @timer.cancel
78
- end
66
+ #
67
+ # Cancel timer
68
+ #
69
+ # @return [Boolean] True if cancel was successful, false otherwise
70
+ #
71
+ def cancel
72
+ Timers.timer_manager.delete(self)
73
+ @timer.cancel
74
+ end
79
75
 
80
- private
76
+ private
81
77
 
82
- #
83
- # Constructs a block to execute timer within
84
- #
85
- # @param [Semaphore] semaphore to obtain before executing
86
- #
87
- # @return [Proc] Block for timer to execute
88
- #
89
- def timer_block(semaphore)
90
- proc {
91
- semaphore.synchronize do
92
- Timers.timer_manager.delete(self)
93
- thread_local(@thread_locals) do
94
- yield(self)
95
- end
78
+ #
79
+ # Constructs a block to execute timer within
80
+ #
81
+ # @param [Semaphore] semaphore to obtain before executing
82
+ #
83
+ # @return [Proc] Block for timer to execute
84
+ #
85
+ def timer_block(semaphore)
86
+ proc {
87
+ semaphore.synchronize do
88
+ Timers.timer_manager.delete(self)
89
+ thread_local(@thread_locals) do
90
+ yield(self)
96
91
  end
97
- }
98
- end
99
-
100
- #
101
- # Convert argument to a duration
102
- #
103
- # @param [Java::JavaTimeTemporal::TemporalAmount, #to_f, #to_i, nil] duration Duration
104
- #
105
- # @raise if duration cannot be used for a timer
106
- #
107
- # @return Argument converted to seconds if it responds to #to_f or #to_i, otherwise duration unchanged
108
- #
109
- def to_duration(duration)
110
- if duration.nil? || duration.is_a?(Java::JavaTimeTemporal::TemporalAmount)
111
- duration
112
- elsif duration.respond_to?(:to_f)
113
- duration.to_f.seconds
114
- elsif duration.respond_to?(:to_i)
115
- duration.to_i.seconds
116
- else
117
- raise ArgumentError, "Supplied argument '#{duration}' cannot be converted to a duration"
118
92
  end
93
+ }
94
+ end
95
+
96
+ #
97
+ # Convert argument to a duration
98
+ #
99
+ # @param [Java::JavaTimeTemporal::TemporalAmount, #to_f, #to_i, nil] duration Duration
100
+ #
101
+ # @raise if duration cannot be used for a timer
102
+ #
103
+ # @return Argument converted to seconds if it responds to #to_f or #to_i, otherwise duration unchanged
104
+ #
105
+ def to_duration(duration)
106
+ if duration.nil? || duration.is_a?(Java::JavaTimeTemporal::TemporalAmount)
107
+ duration
108
+ elsif duration.respond_to?(:to_f)
109
+ duration.to_f.seconds
110
+ elsif duration.respond_to?(:to_i)
111
+ duration.to_i.seconds
112
+ else
113
+ raise ArgumentError, "Supplied argument '#{duration}' cannot be converted to a duration"
119
114
  end
120
115
  end
121
116
  end
@@ -36,8 +36,10 @@ module OpenHAB
36
36
  thread_locals ||= {}
37
37
  return Timers.reentrant_timer(duration: duration, thread_locals: thread_locals, id: id, &block) if id
38
38
 
39
- Timer.new(duration: duration, thread_locals: thread_locals, &block)
39
+ OpenHAB::DSL::Timer.new(duration: duration, thread_locals: thread_locals, &block)
40
40
  end
41
+ # An alias for +after+
42
+ alias create_timer after
41
43
 
42
44
  #
43
45
  # Provdes access to the hash for mapping timer ids to the set of active timers associated with that id
@@ -5,5 +5,5 @@
5
5
  #
6
6
  module OpenHAB
7
7
  # @return [String] Version of OpenHAB helper libraries
8
- VERSION = '4.32.7'
8
+ VERSION = '4.33.0'
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openhab-scripting
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.32.7
4
+ version: 4.33.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian O'Connell
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-03-07 00:00:00.000000000 Z
11
+ date: 2022-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler