openhab-scripting 3.5.0 → 3.6.4

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: 0cfe54bca7a28404b0011b2b3686d0617558a4567fe620f847bb14497e9d1604
4
- data.tar.gz: b8716022904648f8d0898d7866de3b7091e5890b8e5c3ccd53ea192467116d6b
3
+ metadata.gz: 781c6dc088d4de8ff0220c44e5f1985b6dce89d8579cbfc268dc6e2a750340b5
4
+ data.tar.gz: 92474c9a60e792b1c271f2452276cbdf9a5c7279e8a2913e6f88ca80b6aa7a1f
5
5
  SHA512:
6
- metadata.gz: 1a8256023fc3a4504d7ee410c5bba1b784bb197736c5dd84a07e2fd6a289062e905503e04c88c2302138eb561bb82ac0566315f4d75bca417f88818dc57f0326
7
- data.tar.gz: 4e4f81238fd24e824a3c255d9f96b2ad0d386efb9d663639ef7c085a89692eb5f3d68698caa5ebc8137050586bf5d8ad721f3d72925e4e0ab3fcedef1ce1ba5a
6
+ metadata.gz: 9fc179dd14e9639c7734f7e91e44fdcb0a9fbbc7526f7a18897b9b7849624f55557369a7fd7f30b79c8581967dc76c3c0c7affde66ee1e702df4fabe0861a364
7
+ data.tar.gz: cb8a8e31a9ef8ced5f0c1a0c2e51c0f5c308b6789137fd079951f7874829910c73e8ebe913179690a9c8e8fba28340921472f390abeea1eee4c9a6b42a4f8138
@@ -42,6 +42,8 @@ module OpenHAB
42
42
  def_delegator item, method
43
43
  end
44
44
  define_method(:oh_item) { instance_variable_get(item) }
45
+ define_method(:hash) { oh_item.hash_code }
46
+ define_method(:eql?) { |other| hash == other.hash }
45
47
  end
46
48
 
47
49
  #
@@ -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
 
@@ -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.5.0'
8
+ VERSION = '3.6.4'
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.5.0
4
+ version: 3.6.4
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-06-01 00:00:00.000000000 Z
11
+ date: 2021-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler