openhab-scripting 4.14.0 → 4.15.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.
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