openhab-scripting 4.33.1 → 4.34.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/rules/triggers/cron/cron.rb +47 -6
- data/lib/openhab/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f374040f733839953804416c74c3690e1c9643143c1af746218528d7e1da50f
|
4
|
+
data.tar.gz: 5db466d2078bd40e3c47dd699296e9da8270a8c292d1ada94f67c3ff7dd8762f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0200afe739c2e8a3f4dccc02dd138b3946b610276186baeb1ae729633e5be359e466b0046e3c2c8151124968d94d918e7fbde72e22f3994996832d379f30a817
|
7
|
+
data.tar.gz: b9f109a2ee3665319110ee3354bba1efa9d5cbebe31634ca0b78e84aaea39ad3a07dc96ac5a744b52eda4dc19cd8c890abd6a53c2d5181eaa13f14f9afd9760a
|
@@ -13,16 +13,19 @@ module OpenHAB
|
|
13
13
|
#
|
14
14
|
# Create a rule that executes at the specified interval
|
15
15
|
#
|
16
|
-
# @param [Object] value Symbol or
|
16
|
+
# @param [Object] value String, Symbol, Duration, or MonthDay to execute this rule
|
17
17
|
# @param [Object] at TimeOfDay or String representing TimeOfDay in which to execute rule
|
18
18
|
# @param [Object] attach object to be attached to the trigger
|
19
19
|
#
|
20
20
|
#
|
21
21
|
def every(value, at: nil, attach: nil)
|
22
|
+
return every(MonthDay.parse(value), at: at, attach: attach) if value.is_a? String
|
23
|
+
|
22
24
|
cron_expression = case value
|
23
25
|
when Symbol then Cron.from_symbol(value, at)
|
24
26
|
when Java::JavaTime::Duration then Cron.from_duration(value, at)
|
25
|
-
|
27
|
+
when Java::JavaTime::MonthDay then Cron.from_monthday(value, at)
|
28
|
+
else raise ArgumentError, 'Unknown interval'
|
26
29
|
end
|
27
30
|
cron(cron_expression, attach: attach)
|
28
31
|
end
|
@@ -32,8 +35,18 @@ module OpenHAB
|
|
32
35
|
#
|
33
36
|
# @param [String] expression OpenHAB style cron expression
|
34
37
|
# @param [Object] attach object to be attached to the trigger
|
38
|
+
# @param [Hash] elements cron expression elements (second, minute, hour, dom, month, dow, year)
|
35
39
|
#
|
36
|
-
def cron(expression, attach: nil)
|
40
|
+
def cron(expression = nil, attach: nil, **fields)
|
41
|
+
if fields.any?
|
42
|
+
raise ArgumentError, 'Cron elements cannot be used with a cron expression' if expression
|
43
|
+
|
44
|
+
cron_expression = Cron.from_fields(fields)
|
45
|
+
return cron(cron_expression, attach: attach)
|
46
|
+
end
|
47
|
+
|
48
|
+
raise ArgumentError, 'Missing cron expression or elements' unless expression
|
49
|
+
|
37
50
|
cron = Cron.new(rule_triggers: @rule_triggers)
|
38
51
|
cron.trigger(config: { 'cronExpression' => expression }, attach: attach)
|
39
52
|
end
|
@@ -59,7 +72,8 @@ module OpenHAB
|
|
59
72
|
hour: '*',
|
60
73
|
dom: '?',
|
61
74
|
month: '*',
|
62
|
-
dow: '?'
|
75
|
+
dow: '?',
|
76
|
+
year: '*'
|
63
77
|
}.freeze
|
64
78
|
private_constant :CRON_EXPRESSION_MAP
|
65
79
|
|
@@ -96,7 +110,7 @@ module OpenHAB
|
|
96
110
|
#
|
97
111
|
# Create a cron map from a duration
|
98
112
|
#
|
99
|
-
# @param [
|
113
|
+
# @param [Java::JavaTime::Duration] duration
|
100
114
|
# @param [Object] at TimeOfDay or String representing time of day
|
101
115
|
#
|
102
116
|
# @return [Hash] map describing cron expression
|
@@ -107,6 +121,20 @@ module OpenHAB
|
|
107
121
|
map_to_cron(duration_to_map(duration))
|
108
122
|
end
|
109
123
|
|
124
|
+
#
|
125
|
+
# Create a cron map from a MonthDay
|
126
|
+
#
|
127
|
+
# @param [Java::JavaTime::MonthDay] month_day
|
128
|
+
# @param [Object] at TimeOfDay or String representing time of day
|
129
|
+
#
|
130
|
+
# @return [Hash] map describing cron expression
|
131
|
+
#
|
132
|
+
def self.from_monthday(monthday, at)
|
133
|
+
expression_map = EXPRESSION_MAP[:day].merge(month: monthday.month_value, dom: monthday.day_of_month)
|
134
|
+
expression_map = at_condition(expression_map, at) if at
|
135
|
+
map_to_cron(expression_map)
|
136
|
+
end
|
137
|
+
|
110
138
|
#
|
111
139
|
# Create a cron map from a symbol
|
112
140
|
#
|
@@ -121,6 +149,19 @@ module OpenHAB
|
|
121
149
|
map_to_cron(expression_map)
|
122
150
|
end
|
123
151
|
|
152
|
+
#
|
153
|
+
# Create a cron map from cron elements
|
154
|
+
#
|
155
|
+
# @param [Hash] elements Cron fields (second, minute, hour, dom, month, dow, year)
|
156
|
+
#
|
157
|
+
# @return [Hash] map describing cron expression
|
158
|
+
#
|
159
|
+
def self.from_fields(fields)
|
160
|
+
fields = fields.transform_values { |value| value.to_s.gsub(/\s+/, '') }
|
161
|
+
expression_map = CRON_EXPRESSION_MAP.merge(fields)
|
162
|
+
map_to_cron(expression_map)
|
163
|
+
end
|
164
|
+
|
124
165
|
#
|
125
166
|
# Map cron expression to to cron string
|
126
167
|
#
|
@@ -129,7 +170,7 @@ module OpenHAB
|
|
129
170
|
# @return [String] OpenHAB cron string
|
130
171
|
#
|
131
172
|
def self.map_to_cron(map)
|
132
|
-
%i[second minute hour dom month dow].map { |field| map.fetch(field) }.join(' ')
|
173
|
+
%i[second minute hour dom month dow year].map { |field| map.fetch(field) }.join(' ')
|
133
174
|
end
|
134
175
|
|
135
176
|
#
|
data/lib/openhab/version.rb
CHANGED
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: 4.
|
4
|
+
version: 4.34.0
|
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: 2022-03-
|
11
|
+
date: 2022-03-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|