openhab-scripting 3.4.2 → 3.6.2

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: 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