openhab-scripting 4.14.0 → 4.15.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: e18ecb6c7855be5621a529eb7a7c35bfdf7afe8ec134a375e4ef0458f77c4edd
4
- data.tar.gz: 862215cf6988193ec43bbd9a79e8ff16d6a50c91d832346f2d4eb180ba751129
3
+ metadata.gz: 9fa69c603c1f7a32428d12860585b0a4059c70b617b6df72d3da0521a7e36163
4
+ data.tar.gz: 68527c0ea3b42ba5187322062dbe05d4a22bef29dabd048af9336ff80e7da5b7
5
5
  SHA512:
6
- metadata.gz: 21a39ca9ec68afb322cd63fc7c76bd2e8eec26bb8076f0160b3f959465d08060f40516bc9a866251f0c6c1e29a8d2c1b5339645ed6e6726bcf054768e7f262cc
7
- data.tar.gz: 20af639fd0bdf052e34a6eb73b94e0de96f1cdf31584bd2475a54d23d404354444536b7a5ebda83ea51ae0799486ca91d42e96eafb7e9ad260db487aeced166a
6
+ metadata.gz: 7115395f5f02afcbd5b2e3cb243192aaed694309d24383005c567859bba6cf693286c772edb101ce924d10268bc986f406d2ee8dc1a7f942be07793b91dc1ca8
7
+ data.tar.gz: 9d9a0478ba8ee6275014ddbdc03fe67ed23a15acef1813d5195109dbc9069ca2b3d69d5a038a7bf3a4c22ec52433144659e46bf3481c3e5055b97ff8d7920f1e
@@ -87,7 +87,7 @@ module OpenHAB
87
87
  # @return [Queue] <description>
88
88
  #
89
89
  def create_queue(inputs)
90
- case check_guards(event: inputs&.dig('event'))
90
+ case check_guards(event: extract_event(inputs))
91
91
  when true
92
92
  @run_queue.dup.grep_v(RuleConfig::Otherwise)
93
93
  when false
@@ -95,13 +95,30 @@ module OpenHAB
95
95
  end
96
96
  end
97
97
 
98
+ #
99
+ # Extract the event object from inputs
100
+ # and merge other inputs keys/values into the event
101
+ #
102
+ # @param [Map] inputs rule inputs
103
+ #
104
+ # @return [Object] event object
105
+ #
106
+ def extract_event(inputs)
107
+ event = inputs&.dig('event')
108
+ unless event
109
+ event = Struct.new(:event, :attachment, :command).new
110
+ event.command = inputs&.dig('command')
111
+ end
112
+ add_attachment(event, inputs)
113
+ end
114
+
98
115
  #
99
116
  # Get the trigger_id for the trigger that caused the rule creation
100
117
  #
101
118
  # @return [Hash] Input hash potentially containing trigger id
102
119
  #
103
120
  def trigger_id(inputs)
104
- inputs&.keys&.grep(/\.event$/)&.first&.chomp('.event')
121
+ inputs&.dig('module')
105
122
  end
106
123
 
107
124
  #
@@ -128,10 +145,6 @@ module OpenHAB
128
145
  attachment = @attachments[trigger_id(inputs)]
129
146
  return event unless attachment
130
147
 
131
- # Some events, like those from cron triggers don't have an event
132
- # so an event is created
133
- event ||= Struct.new(:event).new
134
-
135
148
  event.attachment = attachment
136
149
  event
137
150
  end
@@ -301,11 +314,9 @@ module OpenHAB
301
314
  # @param [Map] inputs OpenHAB map object describing rule trigge
302
315
  #
303
316
  #
304
- # rubocop:disable Metrics/MethodLength
305
317
  # No logical way to break this method up
306
318
  def process_queue(run_queue, mod, inputs)
307
- event = inputs&.dig('event')
308
- event = add_attachment(event, inputs)
319
+ event = extract_event(inputs)
309
320
 
310
321
  while (task = run_queue.shift)
311
322
  if task.is_a? RuleConfig::Delay
@@ -317,7 +328,6 @@ module OpenHAB
317
328
  rescue StandardError => e
318
329
  print_backtrace(e)
319
330
  end
320
- # rubocop:enable Metrics/MethodLength
321
331
 
322
332
  #
323
333
  # Dispatch execution block tasks to different methods
@@ -38,7 +38,6 @@ module OpenHAB
38
38
  config.guard = Guard::Guard.new(only_if: config.only_if, not_if: config.not_if)
39
39
  logger.trace { config.inspect }
40
40
  process_rule_config(config)
41
- config
42
41
  rescue StandardError => e
43
42
  re_raise_with_backtrace(e)
44
43
  end
@@ -89,6 +88,7 @@ module OpenHAB
89
88
  Rules.script_rules << rule
90
89
  add_rule(rule)
91
90
  rule.execute(nil, { 'event' => Struct.new(:attachment).new(config.start_attachment) }) if config.on_start?
91
+ rule
92
92
  end
93
93
 
94
94
  #
@@ -8,6 +8,7 @@ require 'openhab/dsl/rules/triggers/changed'
8
8
  require 'openhab/dsl/rules/triggers/channel'
9
9
  require 'openhab/dsl/rules/triggers/command'
10
10
  require 'openhab/dsl/rules/triggers/updated'
11
+ require 'openhab/dsl/rules/triggers/generic'
11
12
  require 'openhab/dsl/rules/guard'
12
13
  require 'openhab/core/entity_lookup'
13
14
  require 'openhab/dsl/between'
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'openhab/log/logger'
4
+
5
+ module OpenHAB
6
+ module DSL
7
+ module Rules
8
+ #
9
+ # Module holds rule triggers
10
+ #
11
+ module Triggers
12
+ include OpenHAB::Log
13
+
14
+ #
15
+ # Create a generic trigger given the trigger type uid and a configuration hash
16
+ #
17
+ # @param [Type] Trigger type UID
18
+ # @param [Configuration] A hash containing the trigger configuration entries
19
+ #
20
+ # @return [Trigger] Trigger object
21
+ #
22
+ def trigger(type, attach: nil, **configuration)
23
+ logger.trace("Creating a generic trigger for type(#{type}) with configuration(#{configuration})")
24
+ append_trigger(type, configuration, attach: attach)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -48,6 +48,7 @@ module OpenHAB
48
48
  #
49
49
  def append_trigger(type, config, attach: nil)
50
50
  logger.trace("Creating trigger of type #{type} for #{config}")
51
+ config.transform_keys!(&:to_s)
51
52
  trigger = Trigger.trigger(type: type, config: config)
52
53
  @attachments[trigger.id] = attach if attach
53
54
  @triggers << trigger
@@ -24,8 +24,6 @@ module OpenHAB
24
24
  include OpenHAB::Log
25
25
  extend Forwardable
26
26
 
27
- def_delegator :@timer, :is_active, :active?
28
- def_delegator :@timer, :is_running, :running?
29
27
  def_delegator :@timer, :has_terminated, :terminated?
30
28
 
31
29
  #
@@ -30,11 +30,7 @@ module OpenHAB
30
30
  #
31
31
  # @return [QuantityType] This quantity converted to another unit
32
32
  #
33
- def |(other)
34
- other = org.openhab.core.types.util.UnitUtils.parse_unit(other) if other.is_a?(String)
35
-
36
- to_unit(other)
37
- end
33
+ alias | to_unit
38
34
 
39
35
  #
40
36
  # Comparison
@@ -27,7 +27,7 @@ module OpenHAB
27
27
  #
28
28
  def coerce(other)
29
29
  logger.trace("Coercing #{self} (#{self.class}) as a request from #{other.class}")
30
- return [other.as(self.class), self] if other.is_a?(Type)
30
+ return [other.as(self.class), self] if other.is_a?(Type) && other.respond_to?(:as)
31
31
  end
32
32
 
33
33
  #
@@ -5,5 +5,5 @@
5
5
  #
6
6
  module OpenHAB
7
7
  # @return [String] Version of OpenHAB helper libraries
8
- VERSION = '4.14.0'
8
+ VERSION = '4.15.1'
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.14.0
4
+ version: 4.15.1
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: 2021-11-14 00:00:00.000000000 Z
11
+ date: 2021-11-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -103,6 +103,7 @@ files:
103
103
  - lib/openhab/dsl/rules/triggers/channel.rb
104
104
  - lib/openhab/dsl/rules/triggers/command.rb
105
105
  - lib/openhab/dsl/rules/triggers/cron.rb
106
+ - lib/openhab/dsl/rules/triggers/generic.rb
106
107
  - lib/openhab/dsl/rules/triggers/trigger.rb
107
108
  - lib/openhab/dsl/rules/triggers/updated.rb
108
109
  - lib/openhab/dsl/states.rb