openhab-scripting 4.26.4 → 4.27.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: cd63a855a2b36bd98bbec644125c3d3969b5de15c34a6a068c1569be78af7df7
4
- data.tar.gz: 742a8bc187187d0b3efec387286781464567bb87e77723b7c46a97fa5f5b3f82
3
+ metadata.gz: 16eb15617a1a088c561a6d12e1f6e2ba39459491c9e831933ff235d3177ba225
4
+ data.tar.gz: 40f21e9e4bb53c04f1bd9e4ee51b834756783218584f05728e26860eb95d491c
5
5
  SHA512:
6
- metadata.gz: 7b70022cd9e0fdcc545611ca0a36b5a6122884b8cccfa1f1992cbec7b1d19b24cb86fa55e127b258500c318090dbf0bb9009d3916d32d61c0c2ca3f2e0edb290
7
- data.tar.gz: cd6bcd955c3c853bc6e52cdd999e096ca5ecc78bbd61f1db4ff9426395220fe9156a8f458deee0637f85e1c6dc27f2e7b74c8835c2c984d84f2baa92c4a9eb65
6
+ metadata.gz: ac79f5e48d51ec69530c88fe05541e3c6051df205858371a5f450a226d680940058023cab20df0037c148293f60e9b85e20768669c48657ead01ee828097a16a
7
+ data.tar.gz: e8b218bdd0ecedbb3910c9859bb43e8f06c5372ffc7aa94a6fae0abe7f5defeff8d3a3f6fdee1af9337e8a2684ea2ce194d9e09344f5144650c38b1e91c9f9ea
@@ -5,6 +5,7 @@ require 'java'
5
5
  require 'set'
6
6
 
7
7
  require 'openhab/log/logger'
8
+ require_relative 'item_proxy'
8
9
 
9
10
  # Automation lookup and injection of OpenHab entities
10
11
 
@@ -91,7 +92,8 @@ module OpenHAB
91
92
  def self.lookup_item(name)
92
93
  logger.trace("Looking up item(#{name})")
93
94
  name = name.to_s if name.is_a? Symbol
94
- $ir.get(name) # rubocop: disable Style/GlobalVars
95
+ item = $ir.get(name) # rubocop: disable Style/GlobalVars
96
+ ItemProxy.new(item) unless item.nil?
95
97
  end
96
98
  end
97
99
  end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'delegate'
4
+ require 'forwardable'
5
+
6
+ module OpenHAB
7
+ module Core
8
+ # Class is a proxy to underlying item
9
+ class ItemProxy < Delegator
10
+ extend Forwardable
11
+ def_delegators :__getobj__, :class, :is_a?, :kind_of?, :instance_of?
12
+
13
+ #
14
+ # Set the proxy item (called by super)
15
+ #
16
+ def __setobj__(item)
17
+ # Convert name to java version for faster lookups
18
+ @item_name = item.name.to_java
19
+ end
20
+
21
+ #
22
+ # Lookup item from item registry
23
+ #
24
+ def __getobj__
25
+ $ir.get(@item_name) # rubocop:disable Style/GlobalVars
26
+ end
27
+ end
28
+ end
29
+ end
@@ -33,6 +33,13 @@ module OpenHAB
33
33
  def ACCEPTED_DATA_TYPES
34
34
  [org.openhab.core.types.UnDefType.java_class].freeze
35
35
  end
36
+
37
+ #
38
+ # Override to support ItemProxy
39
+ #
40
+ def ===(other)
41
+ other.instance_of?(self)
42
+ end
36
43
  end
37
44
  # rubocop:enable Naming/MethodName
38
45
 
@@ -6,11 +6,9 @@ require 'openhab/dsl/types/types'
6
6
  require_relative 'item_registry'
7
7
 
8
8
  require_relative 'generic_item'
9
-
10
9
  require_relative 'switch_item'
11
10
  require_relative 'date_time_item'
12
11
  require_relative 'dimmer_item'
13
-
14
12
  require_relative 'color_item'
15
13
  require_relative 'contact_item'
16
14
  require_relative 'group_item'
@@ -48,7 +48,9 @@ module OpenHAB
48
48
  # @return [StateStorage] item states
49
49
  #
50
50
  def store_states(*items)
51
- items = items.flatten
51
+ items = items.flatten.map do |item|
52
+ item.respond_to?(:__getobj__) ? item.__getobj__ : item
53
+ end
52
54
  states = StateStorage.new(BusEvent.storeStates(*items).to_h)
53
55
  if block_given?
54
56
  yield
@@ -5,5 +5,5 @@
5
5
  #
6
6
  module OpenHAB
7
7
  # @return [String] Version of OpenHAB helper libraries
8
- VERSION = '4.26.4'
8
+ VERSION = '4.27.0'
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openhab-scripting
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.26.4
4
+ version: 4.27.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian O'Connell
@@ -47,6 +47,7 @@ extra_rdoc_files: []
47
47
  files:
48
48
  - lib/openhab.rb
49
49
  - lib/openhab/core/entity_lookup.rb
50
+ - lib/openhab/core/item_proxy.rb
50
51
  - lib/openhab/core/load_path.rb
51
52
  - lib/openhab/core/openhab_setup.rb
52
53
  - lib/openhab/core/osgi.rb