openhab-scripting 2.23.3 → 2.24.0

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: e2ae7c9c46b7dff785181b7846dc6e6e6b9f27d445d7f1b7cc108814e1e75531
4
- data.tar.gz: fffb46ad699350c94c580a3cb8ee2545a3c7c5372a81d4c7dc867cb834ee33db
3
+ metadata.gz: 4ce40856625691eb49a22ee19ac02bd030dba8cdf6e62f86736f9974cf7e2162
4
+ data.tar.gz: 98e2226b8d4286f16a7f3b4ae40ef45246489df9464d1b3a6f5f7eea37ed93cb
5
5
  SHA512:
6
- metadata.gz: 790a2b3838ce8847bf3dafe567336400c43dae0b9d638318c7c1d70539f60ed45714af3f376f2a93f27265b222dd35474b1fb477eb1c892258cea401ab3ff321
7
- data.tar.gz: 5085945c207f2b00353ca899fab65a2e0990751c083b433729b22e3d798dac11b1a4e99a3d07fdaf6db439d5787e06b9d9a984661496b8a767d13d668f077b43
6
+ metadata.gz: d3e2329d4a8b1ef612348f135a827e0011ffa0fa6b2958d2d333def5777db2ed76bd91e3cd0310c2075fe0b941b6936482a21c3ef20cca4a14283780629704b8
7
+ data.tar.gz: d809054def4036f6b42faf9aa069a9f201fd0fd01120df1ebb32df91a5b7069a8073237153b1f0ac2ced5477e47a24547496fab48b317d57fbb100dc286eb59f
@@ -16,10 +16,11 @@ module OpenHAB
16
16
  #
17
17
  class DateTimeItem
18
18
  extend Forwardable
19
+ extend OpenHAB::DSL::Items::ItemDelegate
20
+
19
21
  include Comparable
20
- include OpenHAB::DSL::Items::ItemDelegate
21
22
 
22
- def_delegator :@datetime_item, :to_s
23
+ def_item_delegator :@datetime_item
23
24
 
24
25
  #
25
26
  # Create a new DateTimeItem
@@ -29,8 +30,8 @@ module OpenHAB
29
30
  #
30
31
  def initialize(datetime_item)
31
32
  @datetime_item = datetime_item
32
- item_delegate { @datetime_item }
33
- item_delegate { to_dt }
33
+ item_missing_delegate { @datetime_item }
34
+ item_missing_delegate { to_dt }
34
35
  end
35
36
 
36
37
  #
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'java'
4
4
  require 'openhab/log/logger'
5
+ require 'forwardable'
5
6
 
6
7
  module OpenHAB
7
8
  module DSL
@@ -12,6 +13,36 @@ module OpenHAB
12
13
  module ItemDelegate
13
14
  include OpenHAB::Log
14
15
 
16
+ # @return [Array<Symbol>] Array of methods that by default will be forwarded to an OpenHAB Item.
17
+ DEFAULT_DELEGATION_METHODS = %i[to_s groups].freeze
18
+ private_constant :DEFAULT_DELEGATION_METHODS
19
+
20
+ #
21
+ # Extends calling object with DSL and helper methods
22
+ #
23
+ # @param [Object] base Object to decorate with DSL and helper methods
24
+ #
25
+ #
26
+ def self.extended(base)
27
+ base.extend Forwardable
28
+ base.include OpenHAB::DSL::Items::ItemDelegate
29
+ end
30
+
31
+ #
32
+ # Delegate a set of methods to the supplied delegator
33
+ #
34
+ # @param [Java::OrgOpenhabCoreItems::GenericItem] item to delegate methods to
35
+ # @param [Symbol] methods to delegate, if not supplied default methods are used
36
+ #
37
+ #
38
+ def def_item_delegator(item, *methods)
39
+ methods = DEFAULT_DELEGATION_METHODS if methods.size.zero?
40
+ methods.each do |method|
41
+ logger.trace("Creating delegate for (#{method}) to #{item}) for #{self.class}")
42
+ def_delegator item, method
43
+ end
44
+ end
45
+
15
46
  #
16
47
  # Delegates methods to the object returned from the supplied block if
17
48
  # they don't exist in the object this is included in. If the supplied block returns nil, no delegation occurs
@@ -22,7 +53,7 @@ module OpenHAB
22
53
  # @param [Proc] &delegate delgegate block
23
54
  #
24
55
  #
25
- def item_delegate(&delegate)
56
+ def item_missing_delegate(&delegate)
26
57
  @delegates ||= []
27
58
  @delegates << delegate
28
59
  end
@@ -16,11 +16,9 @@ module OpenHAB
16
16
  # Disabled because this class has a single responsibility, there does not appear a logical
17
17
  # way of breaking it up into multiple classes
18
18
  class NumberItem < Numeric
19
- extend Forwardable
19
+ extend OpenHAB::DSL::Items::ItemDelegate
20
20
 
21
- include OpenHAB::DSL::Items::ItemDelegate
22
-
23
- def_delegator :@number_item, :to_s
21
+ def_item_delegator :@number_item
24
22
 
25
23
  java_import org.openhab.core.library.types.DecimalType
26
24
  java_import org.openhab.core.library.types.QuantityType
@@ -34,7 +32,7 @@ module OpenHAB
34
32
  #
35
33
  def initialize(number_item)
36
34
  @number_item = number_item
37
- item_delegate { @number_item }
35
+ item_missing_delegate { @number_item }
38
36
  super()
39
37
  end
40
38
 
@@ -14,10 +14,10 @@ module OpenHAB
14
14
  class RollershutterItem < Numeric
15
15
  extend Forwardable
16
16
  extend OpenHAB::DSL::Items::ItemCommand
17
- include OpenHAB::DSL::Items::ItemDelegate
17
+ extend OpenHAB::DSL::Items::ItemDelegate
18
18
  include Comparable
19
19
 
20
- def_delegator :@rollershutter_item, :to_s
20
+ def_item_delegator :@rollershutter_item
21
21
 
22
22
  java_import Java::OrgOpenhabCoreLibraryTypes::PercentType
23
23
  java_import Java::OrgOpenhabCoreLibraryTypes::UpDownType
@@ -37,8 +37,8 @@ module OpenHAB
37
37
  logger.trace("Wrapping #{rollershutter_item}")
38
38
  @rollershutter_item = rollershutter_item
39
39
 
40
- item_delegate { @rollershutter_item }
41
- item_delegate { position }
40
+ item_missing_delegate { @rollershutter_item }
41
+ item_missing_delegate { position }
42
42
 
43
43
  super()
44
44
  end
@@ -15,13 +15,13 @@ module OpenHAB
15
15
  extend Forwardable
16
16
 
17
17
  include Comparable
18
- include OpenHAB::DSL::Items::ItemDelegate
18
+ extend OpenHAB::DSL::Items::ItemDelegate
19
19
 
20
20
  # @return [Regex] Regular expression matching blank strings
21
21
  BLANK_RE = /\A[[:space:]]*\z/.freeze
22
22
  private_constant :BLANK_RE
23
23
 
24
- def_delegator :@string_item, :to_s
24
+ def_item_delegator :@string_item
25
25
 
26
26
  #
27
27
  # Create a new StringItem
@@ -31,8 +31,8 @@ module OpenHAB
31
31
  def initialize(string_item)
32
32
  @string_item = string_item
33
33
 
34
- item_delegate { @string_item }
35
- item_delegate { @string_item.state&.to_full_string&.to_s }
34
+ item_missing_delegate { @string_item }
35
+ item_missing_delegate { @string_item.state&.to_full_string&.to_s }
36
36
 
37
37
  super()
38
38
  end
@@ -115,6 +115,15 @@ module OpenHAB
115
115
  def inspect
116
116
  toString
117
117
  end
118
+
119
+ #
120
+ # Return all groups that this item is part of
121
+ #
122
+ # @return [Array<Group>] All groups that this item is part of
123
+ #
124
+ def groups
125
+ group_names.map { |name| OpenHAB::DSL::Groups.groups[name] }
126
+ end
118
127
  end
119
128
 
120
129
  java_import Java::OrgOpenhabCoreItems::GenericItem
@@ -5,5 +5,5 @@
5
5
  #
6
6
  module OpenHAB
7
7
  # @return [String] Version of OpenHAB helper libraries
8
- VERSION = '2.23.3'
8
+ VERSION = '2.24.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: 2.23.3
4
+ version: 2.24.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: 2021-02-21 00:00:00.000000000 Z
11
+ date: 2021-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler