openhab-scripting 2.23.3 → 2.24.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: 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