openhab-scripting 4.23.0 → 4.24.0
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 +4 -4
- data/lib/openhab/dsl/items/location_item.rb +8 -1
- data/lib/openhab/dsl/types/point_type.rb +24 -1
- data/lib/openhab/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b0032a1e364c6042f9f01f21c8315f0cbaf2e3b311c7e227073eb26394f8f8a
|
4
|
+
data.tar.gz: c3c2279228081ec8f9a565dd9e3fd8a2d42b1c09d01c6de85951493a79f8f098
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ac07684db4dc05fa66423d2d775d8bbddeb197b672d6e7bd87a3ff811e0c1d9ea1a93da26a9775bfa4d2fba3b07d915783caf3eadaace99d6e09b2fe65ceb2e
|
7
|
+
data.tar.gz: 9f5be2827c0dddc7224b91d2fb9afbeffeb276b9395ff2439910415aade2019c8f2f374e07e47b38719f8c70ace700d3c4f3b7d8509086404037d21f338e3c7f
|
@@ -25,7 +25,14 @@ module OpenHAB
|
|
25
25
|
super
|
26
26
|
end
|
27
27
|
|
28
|
-
#
|
28
|
+
# Support conversion to location items from a hash
|
29
|
+
# @!visibility private
|
30
|
+
def format_type(command)
|
31
|
+
return PointType.new(command.to_hash) if command.respond_to?(:to_hash)
|
32
|
+
|
33
|
+
super
|
34
|
+
end
|
35
|
+
|
29
36
|
# Type Coercion
|
30
37
|
#
|
31
38
|
# Coerce object to a PointType
|
@@ -17,6 +17,7 @@ module OpenHAB
|
|
17
17
|
# @param longitude [DecimalType, QuantityType, StringType, Numeric]
|
18
18
|
# @param altitude [DecimalType, QuantityType, StringType, Numeric]
|
19
19
|
def initialize(*args) # rubocop:disable Metrics
|
20
|
+
args = from_hash(args.first.to_hash) if args.first.respond_to? :to_hash
|
20
21
|
if (2..3).cover?(args.length)
|
21
22
|
args = args.each_with_index.map do |value, index|
|
22
23
|
if value.is_a?(DecimalType) || value.is_a?(StringType)
|
@@ -118,6 +119,13 @@ module OpenHAB
|
|
118
119
|
QuantityType.new(raw_altitude.to_big_decimal, Units::METRE)
|
119
120
|
end
|
120
121
|
|
122
|
+
#
|
123
|
+
# Convert the PointType to a hash
|
124
|
+
# @return [Hash] with keys latitude/longitude/altitude
|
125
|
+
def to_h
|
126
|
+
{ latitude: latitude, longitude: longitude, altitude: altitude }
|
127
|
+
end
|
128
|
+
|
121
129
|
#
|
122
130
|
# Calculate the distance in meters from other, ignoring altitude.
|
123
131
|
#
|
@@ -138,7 +146,7 @@ module OpenHAB
|
|
138
146
|
|
139
147
|
# coerce an object to a PointType
|
140
148
|
# @return [PointType]
|
141
|
-
def coerce_single(other)
|
149
|
+
def coerce_single(other) # rubocop:disable Metrics
|
142
150
|
logger.trace("Coercing #{self} as a request from #{other.class}")
|
143
151
|
if other.is_a?(PointType)
|
144
152
|
other
|
@@ -148,7 +156,22 @@ module OpenHAB
|
|
148
156
|
other.state
|
149
157
|
elsif other.respond_to?(:to_str)
|
150
158
|
PointType.new(other.to_str)
|
159
|
+
elsif other.respond_to?(:to_hash)
|
160
|
+
PointType.new(other.to_hash)
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
#
|
165
|
+
# Convert hash into ordered arguments for constructor
|
166
|
+
#
|
167
|
+
def from_hash(hash)
|
168
|
+
keys = [%i[lat long alt], %i[latitude longitude altitude]]
|
169
|
+
keys.each do |key_set|
|
170
|
+
values = hash.transform_keys(&:to_sym).values_at(*key_set)
|
171
|
+
|
172
|
+
return *values.compact if values[0..1].all?
|
151
173
|
end
|
174
|
+
raise ArgumentError, "Supplied arguments (#{hash}) must contain one of the following sets #{keys}"
|
152
175
|
end
|
153
176
|
end
|
154
177
|
end
|
data/lib/openhab/version.rb
CHANGED