openhab-scripting 3.4.2 → 3.6.2

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: f309bd0e53d6ef4d8e738fb95507b79a3467e386b031a7e087c15502c20442cf
4
- data.tar.gz: 0fbf71682ac4809b5d804f47ff3e847f8632d91a2749514c04abb6e7b5e02713
3
+ metadata.gz: 32d2b52800d9262e6acafa9d34f52341ff864afdee914656244259172236c00f
4
+ data.tar.gz: a0bffdf4bc45e3e76054fd3664803bde6a8614eb3fee91572dc5054aeb0e2748
5
5
  SHA512:
6
- metadata.gz: 7b323582ae4bb7e8e5d5501353f0021437fa53f4170e098f51d518f30103d6a4241474678f80d1330d1c6257de354e58633ad16ea3e5e928315a2235aba51389
7
- data.tar.gz: 56ea9c5ec2b80d16c4f9ccdd08fbab04a45aee6460947de4df219c800e2120fa6f169290886984c25b942408ebc62c13913f03bd9a7e54aa52468e5b7e308c72
6
+ metadata.gz: c6f6cff7d8416cc278ec6ce2553018e3e420e5c02641d37fa1ffe4f6aede13f92a98041c65e1a607aff5e219eaef6e7ab90e9472a308096b4807617c7ab9046f
7
+ data.tar.gz: abbc99702d523b507c327cd1f77f52e73d8ae1d2ed63be0e3ac06112f6a6287d4a4a65f2ba8fe77f8d71339ce374cdc55fd1db30d95a57415b7c116696c77dac
@@ -41,6 +41,7 @@ module OpenHAB
41
41
  logger.trace("Creating delegate for (#{method}) to #{item}) for #{self.class}")
42
42
  def_delegator item, method
43
43
  end
44
+ define_method(:oh_item) { instance_variable_get(item) }
44
45
  end
45
46
 
46
47
  #
@@ -23,8 +23,8 @@ module OpenHAB
23
23
 
24
24
  java_import org.openhab.core.library.types.DecimalType
25
25
  java_import org.openhab.core.library.types.QuantityType
26
- java_import 'tec.uom.se.format.SimpleUnitFormat'
27
- java_import 'tec.uom.se.AbstractUnit'
26
+ java_import org.openhab.core.types.util.UnitUtils
27
+ java_import org.openhab.core.library.unit.Units
28
28
 
29
29
  item_type Java::OrgOpenhabCoreLibraryItems::NumberItem
30
30
 
@@ -93,7 +93,7 @@ module OpenHAB
93
93
  # @return [OpenHAB::DSL::Types::Quantity] NumberItem converted to supplied Unit
94
94
  #
95
95
  def |(other)
96
- other = SimpleUnitFormat.instance.unitFor(other) if other.is_a? String
96
+ other = UnitUtils.parse_unit(other) if other.is_a? String
97
97
 
98
98
  if dimension
99
99
  to_qt | other
@@ -111,7 +111,7 @@ module OpenHAB
111
111
  if dimension
112
112
  Quantity.new(@number_item.get_state_as(QuantityType))
113
113
  else
114
- Quantity.new(QuantityType.new(to_d.to_java, AbstractUnit::ONE))
114
+ Quantity.new(QuantityType.new(to_d.to_java, Units::ONE))
115
115
  end
116
116
  end
117
117
 
@@ -33,7 +33,7 @@ module OpenHAB
33
33
  #
34
34
  #
35
35
  def command(command)
36
- command = command.to_java.strip_trailing_zeros if command.is_a? BigDecimal
36
+ command = command.to_java.strip_trailing_zeros.to_plain_string if command.is_a? BigDecimal
37
37
  logger.trace "Sending Command #{command} to #{id}"
38
38
  BusEvent.sendCommand(self, command.to_s)
39
39
  end
@@ -47,6 +47,7 @@ module OpenHAB
47
47
  #
48
48
  #
49
49
  def update(update)
50
+ update = update.to_java.strip_trailing_zeros.to_plain_string if update.is_a? BigDecimal
50
51
  logger.trace "Sending Update #{update} to #{id}"
51
52
  BusEvent.postUpdate(self, update.to_s)
52
53
  end
@@ -10,6 +10,7 @@ module OpenHAB
10
10
  #
11
11
  module Types
12
12
  java_import Java::OrgOpenhabCoreLibraryTypes::DecimalType
13
+ java_import org.openhab.core.types.util.UnitUtils
13
14
 
14
15
  #
15
16
  # MonkeyPatching Decimal Type
@@ -72,7 +73,7 @@ module OpenHAB
72
73
  # @return [OpenHAB::Core::DSL::Types::Quantity] NumberItem converted to supplied Unit
73
74
  #
74
75
  def |(other)
75
- other = SimpleUnitFormat.instance.unitFor(other) if other.is_a? String
76
+ other = UnitUtils.parse_unit(other) if other.is_a? String
76
77
  Quantity.new(QuantityType.new(to_big_decimal, other))
77
78
  end
78
79
 
@@ -48,7 +48,8 @@ module OpenHAB
48
48
  # @return [StateStorage] item states
49
49
  #
50
50
  def store_states(*items)
51
- states = StateStorage.new(BusEvent.storeStates(*items.flatten).to_h)
51
+ items = items.flatten.map { |item| item.respond_to?(:oh_item) ? item.oh_item : item }
52
+ states = StateStorage.new(BusEvent.storeStates(*items).to_h)
52
53
  if block_given?
53
54
  yield
54
55
  states.restore
@@ -23,8 +23,8 @@ module OpenHAB
23
23
 
24
24
  java_import org.openhab.core.library.types.QuantityType
25
25
  java_import org.openhab.core.library.types.DecimalType
26
- java_import 'tec.uom.se.format.SimpleUnitFormat'
27
- java_import 'tec.uom.se.AbstractUnit'
26
+ java_import org.openhab.core.types.util.UnitUtils
27
+ java_import org.openhab.core.library.unit.Units
28
28
 
29
29
  # @return [Hash] Mapping of operation symbols to BigDecimal methods
30
30
  OPERATIONS = {
@@ -48,7 +48,7 @@ module OpenHAB
48
48
  @quantity = case quantity
49
49
  when String then QuantityType.new(quantity)
50
50
  when QuantityType then quantity
51
- when NumberItem, Numeric then QuantityType.new(quantity.to_d.to_java, AbstractUnit::ONE)
51
+ when NumberItem, Numeric then QuantityType.new(quantity.to_d.to_java, Units::ONE)
52
52
  else raise ArgumentError, "Unexpected type #{quantity.class} provided to Quantity initializer"
53
53
  end
54
54
  super()
@@ -62,7 +62,7 @@ module OpenHAB
62
62
  # @return [Quantity] This quantity converted to another unit
63
63
  #
64
64
  def |(other)
65
- other = SimpleUnitFormat.instance.unitFor(other) if other.is_a? String
65
+ other = UnitUtils.parse_unit(other) if other.is_a? String
66
66
 
67
67
  Quantity.new(quantity.to_unit(other))
68
68
  end
@@ -164,7 +164,7 @@ module OpenHAB
164
164
  # @return [String] Representing details about the quantity object
165
165
  #
166
166
  def inspect
167
- if @quantity.unit == AbstractUnit::ONE
167
+ if @quantity.unit == Units::ONE
168
168
  "unit=#{@quantity.unit}, value=#{@quantity.to_string}"
169
169
  else
170
170
  @quantity.to_string
@@ -198,7 +198,7 @@ module OpenHAB
198
198
  # @return [Boolean] True if the quantity should be unitzed based on the unit and operation, false otherwise
199
199
  #
200
200
  def unitize?(quantity, operation)
201
- !(quantity.unit == AbstractUnit::ONE && DIMENSIONLESS_NON_UNITIZED_OPERATIONS.include?(operation))
201
+ !(quantity.unit == Units::ONE && DIMENSIONLESS_NON_UNITIZED_OPERATIONS.include?(operation))
202
202
  end
203
203
 
204
204
  #
@@ -214,7 +214,7 @@ module OpenHAB
214
214
  case quantity.unit
215
215
  when unit
216
216
  quantity
217
- when AbstractUnit::ONE
217
+ when Units::ONE
218
218
  convert_unit_from_dimensionless(quantity, unit)
219
219
  else
220
220
  convert_unit_from_dimensioned(quantity, unit)
@@ -263,7 +263,12 @@ module OpenHAB
263
263
  def unitize(quantity_a, quantity_b, operation = nil)
264
264
  logger.trace("Unitizing (#{quantity_a}) and (#{quantity_b})")
265
265
  quantity_a, quantity_b = [quantity_a, quantity_b].map do |qt|
266
- unitize?(qt, operation) ? convert_unit(qt) : qt
266
+ unitize?(qt, operation) ? convert_unit(qt) : qt.to_big_decimal
267
+ end
268
+
269
+ # Make sure the operation is called on the QuantityType
270
+ if quantity_a.is_a?(Java::JavaMath::BigDecimal) && quantity_b.is_a?(QuantityType) && operation == '*'
271
+ quantity_a, quantity_b = [quantity_b, quantity_a]
267
272
  end
268
273
  return yield quantity_a, quantity_b if block_given?
269
274
 
@@ -10,6 +10,7 @@ end
10
10
 
11
11
  Object.send(:remove_const, :QuantityType)
12
12
  java_import org.openhab.core.library.types.QuantityType
13
+ java_import org.openhab.core.types.util.UnitUtils
13
14
 
14
15
  module OpenHAB
15
16
  module DSL
@@ -17,8 +18,6 @@ module OpenHAB
17
18
  # Provides support for interacting with OpenHAB Units of Measurement
18
19
  #
19
20
  module Units
20
- java_import 'tec.uom.se.format.SimpleUnitFormat'
21
-
22
21
  #
23
22
  # Sets a thread local variable to the supplied unit such that classes operating inside the block
24
23
  # can perform automatic conversions to the supplied unit for NumberItems
@@ -28,7 +27,7 @@ module OpenHAB
28
27
  #
29
28
  #
30
29
  def unit(unit)
31
- unit = SimpleUnitFormat.instance.unitFor(unit) if unit.is_a? String
30
+ unit = UnitUtils.parse_unit(unit) if unit.is_a? String
32
31
  Thread.current.thread_variable_set(:unit, unit)
33
32
  yield
34
33
  ensure
@@ -5,5 +5,5 @@
5
5
  #
6
6
  module OpenHAB
7
7
  # @return [String] Version of OpenHAB helper libraries
8
- VERSION = '3.4.2'
8
+ VERSION = '3.6.2'
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: 3.4.2
4
+ version: 3.6.2
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-04-02 00:00:00.000000000 Z
11
+ date: 2021-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -133,7 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
133
  version: '0'
134
134
  requirements: []
135
135
  rubyforge_project:
136
- rubygems_version: 2.7.6.2
136
+ rubygems_version: 2.7.6.3
137
137
  signing_key:
138
138
  specification_version: 4
139
139
  summary: JRuby Helper Libraries for OpenHAB Scripting