openhab-scripting 4.46.2 → 5.0.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.
Files changed (281) hide show
  1. checksums.yaml +4 -4
  2. data/lib/openhab/core/actions/audio.rb +47 -0
  3. data/lib/openhab/core/actions/ephemeris.rb +39 -0
  4. data/lib/openhab/core/actions/exec.rb +51 -0
  5. data/lib/openhab/core/actions/http.rb +80 -0
  6. data/lib/openhab/core/actions/ping.rb +30 -0
  7. data/lib/openhab/core/actions/transformation.rb +32 -0
  8. data/lib/openhab/core/actions/voice.rb +36 -0
  9. data/lib/openhab/core/actions.rb +82 -0
  10. data/lib/openhab/core/dependency_tracking.rb +34 -0
  11. data/lib/openhab/core/dto/item_channel_link.rb +33 -0
  12. data/lib/openhab/core/dto/thing.rb +27 -0
  13. data/lib/openhab/core/dto.rb +11 -0
  14. data/lib/openhab/core/entity_lookup.rb +152 -70
  15. data/lib/openhab/core/events/abstract_event.rb +18 -0
  16. data/lib/openhab/core/events/abstract_item_registry_event.rb +36 -0
  17. data/lib/openhab/core/events/abstract_thing_registry_event.rb +40 -0
  18. data/lib/openhab/core/events/item_command_event.rb +78 -0
  19. data/lib/openhab/core/events/item_event.rb +22 -0
  20. data/lib/openhab/core/events/item_state_changed_event.rb +75 -0
  21. data/lib/openhab/core/events/item_state_event.rb +79 -0
  22. data/lib/openhab/core/events/thing_status_info_event.rb +55 -0
  23. data/lib/openhab/core/events.rb +10 -0
  24. data/lib/openhab/core/items/accepted_data_types.rb +29 -0
  25. data/lib/openhab/core/items/color_item.rb +52 -0
  26. data/lib/openhab/core/items/contact_item.rb +52 -0
  27. data/lib/openhab/core/items/date_time_item.rb +59 -0
  28. data/lib/openhab/core/items/dimmer_item.rb +148 -0
  29. data/lib/openhab/core/items/generic_item.rb +292 -0
  30. data/lib/openhab/core/items/group_item.rb +176 -0
  31. data/lib/openhab/{dsl → core}/items/image_item.rb +35 -29
  32. data/lib/openhab/core/items/item.rb +273 -0
  33. data/lib/openhab/core/items/location_item.rb +34 -0
  34. data/lib/openhab/core/items/metadata/hash.rb +433 -0
  35. data/lib/openhab/core/items/metadata/namespace_hash.rb +475 -0
  36. data/lib/openhab/core/items/metadata/provider.rb +48 -0
  37. data/lib/openhab/core/items/metadata.rb +11 -0
  38. data/lib/openhab/core/items/number_item.rb +62 -0
  39. data/lib/openhab/core/items/numeric_item.rb +22 -0
  40. data/lib/openhab/core/items/persistence.rb +416 -0
  41. data/lib/openhab/core/items/player_item.rb +66 -0
  42. data/lib/openhab/core/items/provider.rb +44 -0
  43. data/lib/openhab/core/items/proxy.rb +136 -0
  44. data/lib/openhab/core/items/registry.rb +86 -0
  45. data/lib/openhab/core/items/rollershutter_item.rb +68 -0
  46. data/lib/openhab/core/items/semantics/enumerable.rb +177 -0
  47. data/lib/openhab/core/items/semantics.rb +473 -0
  48. data/lib/openhab/core/items/state_storage.rb +53 -0
  49. data/lib/openhab/core/items/string_item.rb +28 -0
  50. data/lib/openhab/core/items/switch_item.rb +78 -0
  51. data/lib/openhab/core/items.rb +108 -0
  52. data/lib/openhab/{dsl → core}/lazy_array.rb +9 -3
  53. data/lib/openhab/core/profile_factory.rb +132 -0
  54. data/lib/openhab/core/provider.rb +230 -0
  55. data/lib/openhab/core/proxy.rb +130 -0
  56. data/lib/openhab/core/registry.rb +40 -0
  57. data/lib/openhab/core/rules/module.rb +26 -0
  58. data/lib/openhab/core/rules/provider.rb +25 -0
  59. data/lib/openhab/core/rules/registry.rb +76 -0
  60. data/lib/openhab/core/rules/rule.rb +150 -0
  61. data/lib/openhab/core/rules.rb +25 -0
  62. data/lib/openhab/core/script_handling.rb +78 -20
  63. data/lib/openhab/core/things/channel.rb +48 -0
  64. data/lib/openhab/core/things/channel_uid.rb +51 -0
  65. data/lib/openhab/core/things/item_channel_link.rb +33 -0
  66. data/lib/openhab/core/things/links/provider.rb +78 -0
  67. data/lib/openhab/core/things/profile_callback.rb +52 -0
  68. data/lib/openhab/core/things/provider.rb +29 -0
  69. data/lib/openhab/core/things/proxy.rb +87 -0
  70. data/lib/openhab/core/things/registry.rb +73 -0
  71. data/lib/openhab/core/things/thing.rb +194 -0
  72. data/lib/openhab/core/things.rb +22 -0
  73. data/lib/openhab/core/timer.rb +148 -0
  74. data/lib/openhab/{dsl → core}/types/comparable_type.rb +5 -3
  75. data/lib/openhab/{dsl → core}/types/date_time_type.rb +55 -127
  76. data/lib/openhab/{dsl → core}/types/decimal_type.rb +50 -48
  77. data/lib/openhab/{dsl → core}/types/hsb_type.rb +35 -83
  78. data/lib/openhab/core/types/increase_decrease_type.rb +34 -0
  79. data/lib/openhab/core/types/next_previous_type.rb +34 -0
  80. data/lib/openhab/{dsl → core}/types/numeric_type.rb +20 -7
  81. data/lib/openhab/core/types/on_off_type.rb +46 -0
  82. data/lib/openhab/core/types/open_closed_type.rb +41 -0
  83. data/lib/openhab/{dsl → core}/types/percent_type.rb +19 -20
  84. data/lib/openhab/core/types/play_pause_type.rb +38 -0
  85. data/lib/openhab/core/types/point_type.rb +117 -0
  86. data/lib/openhab/core/types/quantity_type.rb +325 -0
  87. data/lib/openhab/core/types/raw_type.rb +26 -0
  88. data/lib/openhab/core/types/refresh_type.rb +27 -0
  89. data/lib/openhab/core/types/rewind_fastforward_type.rb +38 -0
  90. data/lib/openhab/core/types/stop_move_type.rb +34 -0
  91. data/lib/openhab/{dsl → core}/types/string_type.rb +17 -28
  92. data/lib/openhab/{dsl → core}/types/type.rb +42 -40
  93. data/lib/openhab/core/types/un_def_type.rb +38 -0
  94. data/lib/openhab/core/types/up_down_type.rb +50 -0
  95. data/lib/openhab/core/types.rb +82 -0
  96. data/lib/openhab/{dsl → core}/uid.rb +4 -23
  97. data/lib/openhab/core/value_cache.rb +188 -0
  98. data/lib/openhab/core.rb +98 -0
  99. data/lib/openhab/core_ext/between.rb +32 -0
  100. data/lib/openhab/core_ext/ephemeris.rb +53 -0
  101. data/lib/openhab/core_ext/java/class.rb +34 -0
  102. data/lib/openhab/core_ext/java/duration.rb +142 -0
  103. data/lib/openhab/core_ext/java/list.rb +436 -0
  104. data/lib/openhab/core_ext/java/local_date.rb +104 -0
  105. data/lib/openhab/core_ext/java/local_time.rb +118 -0
  106. data/lib/openhab/core_ext/java/map.rb +66 -0
  107. data/lib/openhab/core_ext/java/month.rb +71 -0
  108. data/lib/openhab/core_ext/java/month_day.rb +119 -0
  109. data/lib/openhab/core_ext/java/period.rb +103 -0
  110. data/lib/openhab/core_ext/java/temporal_amount.rb +34 -0
  111. data/lib/openhab/core_ext/java/time.rb +62 -0
  112. data/lib/openhab/core_ext/java/unit.rb +15 -0
  113. data/lib/openhab/core_ext/java/zoned_date_time.rb +213 -0
  114. data/lib/openhab/core_ext/ruby/array.rb +21 -0
  115. data/lib/openhab/core_ext/ruby/date.rb +96 -0
  116. data/lib/openhab/core_ext/ruby/date_time.rb +55 -0
  117. data/lib/openhab/core_ext/ruby/module.rb +15 -0
  118. data/lib/openhab/core_ext/ruby/numeric.rb +195 -0
  119. data/lib/openhab/core_ext/ruby/range.rb +70 -0
  120. data/lib/openhab/core_ext/ruby/symbol.rb +7 -0
  121. data/lib/openhab/core_ext/ruby/time.rb +108 -0
  122. data/lib/openhab/core_ext.rb +18 -0
  123. data/lib/openhab/dsl/debouncer.rb +259 -0
  124. data/lib/openhab/dsl/events/watch_event.rb +18 -0
  125. data/lib/openhab/dsl/events.rb +9 -0
  126. data/lib/openhab/dsl/gems.rb +1 -1
  127. data/lib/openhab/dsl/items/builder.rb +578 -0
  128. data/lib/openhab/dsl/items/ensure.rb +73 -82
  129. data/lib/openhab/dsl/items/timed_command.rb +214 -159
  130. data/lib/openhab/dsl/rules/automation_rule.rb +126 -115
  131. data/lib/openhab/dsl/rules/builder.rb +1935 -0
  132. data/lib/openhab/dsl/rules/guard.rb +51 -114
  133. data/lib/openhab/dsl/rules/name_inference.rb +66 -25
  134. data/lib/openhab/dsl/rules/property.rb +48 -75
  135. data/lib/openhab/dsl/rules/rule_triggers.rb +22 -27
  136. data/lib/openhab/dsl/rules/terse.rb +58 -14
  137. data/lib/openhab/dsl/rules/triggers/changed.rb +48 -94
  138. data/lib/openhab/dsl/rules/triggers/channel.rb +9 -40
  139. data/lib/openhab/dsl/rules/triggers/command.rb +14 -63
  140. data/lib/openhab/dsl/rules/triggers/conditions/duration.rb +34 -69
  141. data/lib/openhab/dsl/rules/triggers/conditions/proc.rb +6 -14
  142. data/lib/openhab/dsl/rules/triggers/cron/cron.rb +48 -82
  143. data/lib/openhab/dsl/rules/triggers/cron/cron_handler.rb +30 -47
  144. data/lib/openhab/dsl/rules/triggers/trigger.rb +7 -28
  145. data/lib/openhab/dsl/rules/triggers/updated.rb +21 -45
  146. data/lib/openhab/dsl/rules/triggers/watch/watch_handler.rb +257 -102
  147. data/lib/openhab/dsl/rules/triggers.rb +12 -0
  148. data/lib/openhab/dsl/rules.rb +8 -0
  149. data/lib/openhab/dsl/things/builder.rb +299 -0
  150. data/lib/openhab/{core → dsl}/thread_local.rb +27 -17
  151. data/lib/openhab/dsl/timer_manager.rb +204 -0
  152. data/lib/openhab/dsl/version.rb +9 -0
  153. data/lib/openhab/dsl.rb +979 -0
  154. data/lib/openhab/log.rb +355 -0
  155. data/lib/openhab/osgi.rb +68 -0
  156. data/lib/openhab/rspec/configuration.rb +56 -0
  157. data/lib/openhab/rspec/example_group.rb +132 -0
  158. data/lib/openhab/rspec/helpers.rb +458 -0
  159. data/lib/openhab/rspec/hooks.rb +113 -0
  160. data/lib/openhab/rspec/jruby.rb +46 -0
  161. data/lib/openhab/rspec/karaf.rb +851 -0
  162. data/lib/openhab/rspec/mocks/bundle_install_support.rb +25 -0
  163. data/lib/openhab/rspec/mocks/bundle_resolver.rb +30 -0
  164. data/lib/openhab/rspec/mocks/event_admin.rb +146 -0
  165. data/lib/openhab/rspec/mocks/instance_method_stasher.rb +22 -0
  166. data/lib/openhab/rspec/mocks/persistence_service.rb +155 -0
  167. data/lib/openhab/rspec/mocks/safe_caller.rb +40 -0
  168. data/lib/openhab/rspec/mocks/space.rb +23 -0
  169. data/lib/openhab/rspec/mocks/synchronous_executor.rb +63 -0
  170. data/lib/openhab/rspec/mocks/thing_handler.rb +76 -0
  171. data/lib/openhab/rspec/mocks/timer.rb +134 -0
  172. data/lib/openhab/rspec/openhab/core/actions.rb +38 -0
  173. data/lib/openhab/rspec/openhab/core/items/proxy.rb +15 -0
  174. data/lib/openhab/rspec/openhab/core/things/proxy.rb +27 -0
  175. data/lib/openhab/rspec/shell.rb +31 -0
  176. data/lib/openhab/rspec/suspend_rules.rb +50 -0
  177. data/lib/openhab/rspec.rb +26 -0
  178. data/lib/openhab/yard/base_helper.rb +19 -0
  179. data/lib/openhab/yard/cli/stats.rb +23 -0
  180. data/lib/openhab/yard/code_objects/group_object.rb +23 -0
  181. data/lib/openhab/yard/code_objects/java/base.rb +31 -0
  182. data/lib/openhab/yard/code_objects/java/class_object.rb +11 -0
  183. data/lib/openhab/yard/code_objects/java/field_object.rb +15 -0
  184. data/lib/openhab/yard/code_objects/java/interface_object.rb +15 -0
  185. data/lib/openhab/yard/code_objects/java/package_object.rb +11 -0
  186. data/lib/openhab/yard/code_objects/java/proxy.rb +23 -0
  187. data/lib/openhab/yard/coderay.rb +17 -0
  188. data/lib/openhab/yard/handlers/jruby/base.rb +58 -0
  189. data/lib/openhab/yard/handlers/jruby/class_handler.rb +18 -0
  190. data/lib/openhab/yard/handlers/jruby/constant_handler.rb +18 -0
  191. data/lib/openhab/yard/handlers/jruby/java_import_handler.rb +30 -0
  192. data/lib/openhab/yard/handlers/jruby/mixin_handler.rb +23 -0
  193. data/lib/openhab/yard/html_helper.rb +78 -0
  194. data/lib/openhab/yard/markdown_helper.rb +148 -0
  195. data/lib/openhab/yard/tags/constant_directive.rb +20 -0
  196. data/lib/openhab/yard/tags/group_directive.rb +24 -0
  197. data/lib/openhab/yard/tags/library.rb +3 -0
  198. data/lib/openhab/yard.rb +38 -0
  199. metadata +475 -106
  200. data/lib/openhab/core/item_proxy.rb +0 -29
  201. data/lib/openhab/core/load_path.rb +0 -19
  202. data/lib/openhab/core/openhab_setup.rb +0 -29
  203. data/lib/openhab/core/osgi.rb +0 -58
  204. data/lib/openhab/core/services.rb +0 -24
  205. data/lib/openhab/dsl/actions.rb +0 -114
  206. data/lib/openhab/dsl/between.rb +0 -25
  207. data/lib/openhab/dsl/channel.rb +0 -43
  208. data/lib/openhab/dsl/dsl.rb +0 -59
  209. data/lib/openhab/dsl/group.rb +0 -54
  210. data/lib/openhab/dsl/imports.rb +0 -21
  211. data/lib/openhab/dsl/items/color_item.rb +0 -76
  212. data/lib/openhab/dsl/items/comparable_item.rb +0 -62
  213. data/lib/openhab/dsl/items/contact_item.rb +0 -41
  214. data/lib/openhab/dsl/items/date_time_item.rb +0 -65
  215. data/lib/openhab/dsl/items/dimmer_item.rb +0 -65
  216. data/lib/openhab/dsl/items/generic_item.rb +0 -229
  217. data/lib/openhab/dsl/items/group_item.rb +0 -127
  218. data/lib/openhab/dsl/items/item_equality.rb +0 -59
  219. data/lib/openhab/dsl/items/item_registry.rb +0 -54
  220. data/lib/openhab/dsl/items/items.rb +0 -109
  221. data/lib/openhab/dsl/items/location_item.rb +0 -59
  222. data/lib/openhab/dsl/items/metadata.rb +0 -326
  223. data/lib/openhab/dsl/items/number_item.rb +0 -17
  224. data/lib/openhab/dsl/items/numeric_item.rb +0 -87
  225. data/lib/openhab/dsl/items/persistence.rb +0 -307
  226. data/lib/openhab/dsl/items/player_item.rb +0 -58
  227. data/lib/openhab/dsl/items/rollershutter_item.rb +0 -51
  228. data/lib/openhab/dsl/items/semantics/enumerable.rb +0 -91
  229. data/lib/openhab/dsl/items/semantics.rb +0 -227
  230. data/lib/openhab/dsl/items/string_item.rb +0 -51
  231. data/lib/openhab/dsl/items/switch_item.rb +0 -70
  232. data/lib/openhab/dsl/monkey_patch/actions/actions.rb +0 -4
  233. data/lib/openhab/dsl/monkey_patch/actions/script_thing_actions.rb +0 -39
  234. data/lib/openhab/dsl/monkey_patch/events/events.rb +0 -7
  235. data/lib/openhab/dsl/monkey_patch/events/item_command.rb +0 -85
  236. data/lib/openhab/dsl/monkey_patch/events/item_event.rb +0 -28
  237. data/lib/openhab/dsl/monkey_patch/events/item_state.rb +0 -61
  238. data/lib/openhab/dsl/monkey_patch/events/item_state_changed.rb +0 -60
  239. data/lib/openhab/dsl/monkey_patch/events/thing_status_info.rb +0 -33
  240. data/lib/openhab/dsl/monkey_patch/java/java.rb +0 -4
  241. data/lib/openhab/dsl/monkey_patch/java/local_time.rb +0 -44
  242. data/lib/openhab/dsl/monkey_patch/java/time_extensions.rb +0 -50
  243. data/lib/openhab/dsl/monkey_patch/java/zoned_date_time.rb +0 -45
  244. data/lib/openhab/dsl/monkey_patch/ruby/number.rb +0 -104
  245. data/lib/openhab/dsl/monkey_patch/ruby/ruby.rb +0 -6
  246. data/lib/openhab/dsl/monkey_patch/ruby/string.rb +0 -47
  247. data/lib/openhab/dsl/monkey_patch/ruby/time.rb +0 -61
  248. data/lib/openhab/dsl/openhab.rb +0 -30
  249. data/lib/openhab/dsl/persistence.rb +0 -27
  250. data/lib/openhab/dsl/rules/item_event.rb +0 -19
  251. data/lib/openhab/dsl/rules/rule.rb +0 -160
  252. data/lib/openhab/dsl/rules/rule_config.rb +0 -147
  253. data/lib/openhab/dsl/rules/triggers/generic.rb +0 -31
  254. data/lib/openhab/dsl/rules/triggers/triggers.rb +0 -11
  255. data/lib/openhab/dsl/rules/triggers/watch/watch.rb +0 -81
  256. data/lib/openhab/dsl/states.rb +0 -89
  257. data/lib/openhab/dsl/things.rb +0 -147
  258. data/lib/openhab/dsl/time/month_day.rb +0 -180
  259. data/lib/openhab/dsl/time/time_of_day.rb +0 -235
  260. data/lib/openhab/dsl/timers/manager.rb +0 -119
  261. data/lib/openhab/dsl/timers/reentrant_timer.rb +0 -38
  262. data/lib/openhab/dsl/timers/timer.rb +0 -132
  263. data/lib/openhab/dsl/timers.rb +0 -77
  264. data/lib/openhab/dsl/types/increase_decrease_type.rb +0 -23
  265. data/lib/openhab/dsl/types/next_previous_type.rb +0 -23
  266. data/lib/openhab/dsl/types/on_off_type.rb +0 -28
  267. data/lib/openhab/dsl/types/open_closed_type.rb +0 -29
  268. data/lib/openhab/dsl/types/play_pause_type.rb +0 -27
  269. data/lib/openhab/dsl/types/point_type.rb +0 -180
  270. data/lib/openhab/dsl/types/quantity_type.rb +0 -265
  271. data/lib/openhab/dsl/types/refresh_type.rb +0 -18
  272. data/lib/openhab/dsl/types/rewind_fastforward_type.rb +0 -33
  273. data/lib/openhab/dsl/types/stop_move_type.rb +0 -23
  274. data/lib/openhab/dsl/types/types.rb +0 -83
  275. data/lib/openhab/dsl/types/un_def_type.rb +0 -22
  276. data/lib/openhab/dsl/types/up_down_type.rb +0 -32
  277. data/lib/openhab/dsl/units.rb +0 -45
  278. data/lib/openhab/log/configuration.rb +0 -21
  279. data/lib/openhab/log/logger.rb +0 -282
  280. data/lib/openhab/version.rb +0 -9
  281. data/lib/openhab.rb +0 -36
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'time_extensions'
4
-
5
- module OpenHAB
6
- module DSL
7
- # monkey patches
8
- module MonkeyPatch
9
- # extensions to Java objects
10
- module JavaExtensions
11
- #
12
- # Extend LocalTime class to support arithmetic operators
13
- #
14
- module LocalTimeExtensions
15
- include TimeExtensions
16
- include OpenHAB::Log
17
-
18
- # apply meta-programming methods to prepending class
19
- # @!visibility private
20
- def self.prepended(klass)
21
- # remove the JRuby default == so that we can inherit the Ruby method
22
- klass.remove_method :==
23
- end
24
-
25
- #
26
- # Comparison
27
- #
28
- # @param [LocalTime,TimeOfDay] other object to compare to
29
- #
30
- # @return [Integer] -1, 0, +1 depending on whether +other+ is
31
- # less than, equal to, or greater than self
32
- #
33
- def compare_to(other)
34
- logger.trace("(#{self.class}) #{self} compare_to #{other} (#{other.class})")
35
- other = other.local_time if other.is_a?(TimeOfDay)
36
- super
37
- end
38
- end
39
- end
40
- end
41
- end
42
- end
43
-
44
- java.time.LocalTime.prepend(OpenHAB::DSL::MonkeyPatch::JavaExtensions::LocalTimeExtensions)
@@ -1,50 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module OpenHAB
4
- module DSL
5
- # monkey patches
6
- module MonkeyPatch
7
- # Extensions to Java objects
8
- module JavaExtensions
9
- # Common extensions to Java date/time classes
10
- module TimeExtensions
11
- #
12
- # Add other TemporalAmount or Duration object
13
- #
14
- # @param [TemporalAmount] other the TemporalAmount to be added to this ZonedDateTime object
15
- #
16
- # @return [ZonedDateTime] The resulting ZonedDateTime object after adding {other}
17
- #
18
- def +(other)
19
- plus(other)
20
- end
21
-
22
- #
23
- # Subtract other TemporalAmount or Duration object
24
- #
25
- # @param [TemporalAmount] other the TemporalAmount to be subtracted from this ZonedDateTime object
26
- #
27
- # @return [ZonedDateTime] The resulting ZonedDateTime object after subtracting {other}
28
- #
29
- def -(other)
30
- minus(other)
31
- end
32
-
33
- #
34
- # Compare against another time object
35
- #
36
- # @param [Object] other The other time object to compare against.
37
- #
38
- # @return [Integer] -1, 0, +1 depending on whether +other+ is
39
- # less than, equal to, or greater than self
40
- #
41
- def <=>(other)
42
- compare_to(other)
43
- rescue StandardError
44
- nil
45
- end
46
- end
47
- end
48
- end
49
- end
50
- end
@@ -1,45 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'time_extensions'
4
-
5
- module OpenHAB
6
- module DSL
7
- module MonkeyPatch
8
- #
9
- # Extends the functionalities of Java classes
10
- #
11
- module JavaExtensions
12
- #
13
- # Extend ZonedDateTime class to support arithmetic operators
14
- #
15
- module ZonedDateTimeExtensions
16
- include TimeExtensions
17
- include OpenHAB::Log
18
-
19
- # apply meta-programming methods to prepending class
20
- # @!visibility private
21
- def self.prepended(klass)
22
- # remove the JRuby default == so that we can inherit the Ruby method
23
- klass.remove_method :==
24
- end
25
-
26
- #
27
- # Comparison
28
- #
29
- # @param [ZonedDateTime,Time] other object to compare to
30
- #
31
- # @return [Integer] -1, 0, +1 depending on whether +other+ is
32
- # less than, equal to, or greater than self
33
- #
34
- def compare_to(other)
35
- logger.trace("(#{self.class}) #{self} compare_to #{other} (#{other.class})")
36
- other = other.to_java(ZonedDateTime) if other.is_a? Time
37
- super
38
- end
39
- end
40
- end
41
- end
42
- end
43
- end
44
-
45
- ZonedDateTime.prepend(OpenHAB::DSL::MonkeyPatch::JavaExtensions::ZonedDateTimeExtensions)
@@ -1,104 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module OpenHAB
4
- module DSL
5
- module MonkeyPatch
6
- module Ruby
7
- #
8
- # Extend integer to create duration object
9
- #
10
- module IntegerExtensions
11
- #
12
- # Create Duration with the specified unit
13
- #
14
- # @return [java.time.Duration] Duration with number of units from self
15
- #
16
- %w[millis seconds minutes hours].each do |unit|
17
- define_method(unit) { java.time.Duration.public_send("of_#{unit}", self) }
18
- end
19
-
20
- alias second seconds
21
- alias millisecond millis
22
- alias milliseconds millis
23
- alias ms millis
24
- alias minute minutes
25
- alias hour hours
26
- end
27
-
28
- #
29
- # Extend float to create duration object
30
- #
31
- module FloatExtensions
32
- #
33
- # Create Duration with number of milliseconds
34
- #
35
- # @return [java.time.Duration] Duration truncated to an integral number of milliseconds from self
36
- #
37
- def millis
38
- java.time.Duration.of_millis(to_i)
39
- end
40
-
41
- #
42
- # Create Duration with number of seconds
43
- #
44
- # @return [java.time.Duration] Duration with number of seconds from self
45
- #
46
- def seconds
47
- (self * 1000).millis
48
- end
49
-
50
- #
51
- # Create Duration with number of minutes
52
- #
53
- # @return [java.time.Duration] Duration with number of minutes from self
54
- #
55
- def minutes
56
- (self * 60).seconds
57
- end
58
-
59
- #
60
- # Create Duration with number of hours
61
- #
62
- # @return [java.time.Duration] Duration with number of hours from self
63
- #
64
- def hours
65
- (self * 60).minutes
66
- end
67
-
68
- alias second seconds
69
- alias millisecond millis
70
- alias milliseconds millis
71
- alias ms millis
72
- alias minute minutes
73
- alias hour hours
74
- end
75
-
76
- #
77
- # Extend numeric to create quantity object
78
- #
79
- module NumericExtensions
80
- #
81
- # Convert Numeric to a QuantityType
82
- #
83
- # @param [Object] other String or Unit representing an OpenHAB Unit
84
- #
85
- # @return [Types::QuantityType] +self+ as a {Types::QuantityType} of the supplied Unit
86
- #
87
- def |(other)
88
- other = org.openhab.core.types.util.UnitUtils.parse_unit(other.to_str) if other.respond_to?(:to_str)
89
-
90
- return super unless other.is_a?(javax.measure.Unit)
91
-
92
- Types::QuantityType.new(to_d.to_java, other)
93
- end
94
- end
95
- end
96
- end
97
- end
98
- end
99
-
100
- Integer.prepend(OpenHAB::DSL::MonkeyPatch::Ruby::IntegerExtensions)
101
- Float.prepend(OpenHAB::DSL::MonkeyPatch::Ruby::FloatExtensions)
102
- Numeric.include(OpenHAB::DSL::MonkeyPatch::Ruby::NumericExtensions)
103
- # Integer already has #|, so we have to prepend it here
104
- Integer.prepend(OpenHAB::DSL::MonkeyPatch::Ruby::NumericExtensions)
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'number'
4
- require_relative 'string'
5
- require_relative 'time'
6
- require 'bigdecimal/util'
@@ -1,47 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'openhab/dsl/time/time_of_day'
4
-
5
- module OpenHAB
6
- module DSL
7
- # monkey patches
8
- module MonkeyPatch
9
- # extensions to core Ruby objects
10
- module Ruby
11
- # extend String class so that it will do semantic comparisons against
12
- # DateTimeType and QuantityType, instead of converting the latter to
13
- # String and doing an exact match
14
- module StringExtensions
15
- # {include:StringExtensions}
16
- def ==(other)
17
- case other
18
- when Types::QuantityType,
19
- Types::DateTimeType,
20
- Items::DateTimeItem,
21
- Items::NumericItem,
22
- Between::TimeOfDay
23
- other == self
24
- else
25
- super
26
- end
27
- end
28
-
29
- # {include:StringExtensions}
30
- def <=>(other)
31
- case other
32
- when Types::QuantityType,
33
- Types::DateTimeType,
34
- Items::DateTimeItem,
35
- Items::NumericItem
36
- (other <=> self)&.-@()
37
- else
38
- super
39
- end
40
- end
41
- end
42
- end
43
- end
44
- end
45
- end
46
-
47
- String.prepend(OpenHAB::DSL::MonkeyPatch::Ruby::StringExtensions)
@@ -1,61 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module OpenHAB
4
- module DSL
5
- module MonkeyPatch
6
- module Ruby
7
- # Extend Time class to allow adding/subtracting against Duration
8
- module TimeExtensions
9
- #
10
- # Add time offset
11
- #
12
- # @param [Numeric,Duration] other The offset to add
13
- #
14
- # @return [Time] The resulting time after adding the given offset
15
- #
16
- def +(other)
17
- other = to_seconds(other)
18
- super
19
- end
20
-
21
- #
22
- # Subtract time offset
23
- #
24
- # @param [Numeric,Duration] other The offset to subtract
25
- #
26
- # @return [Time] The resulting time after subtracting the given offset
27
- #
28
- def -(other)
29
- other = to_seconds(other)
30
- super
31
- end
32
-
33
- #
34
- # Convert to ZonedDateTime
35
- #
36
- # @return [ZonedDateTime] The current time object converted to ZonedDateTime
37
- #
38
- def to_zdt
39
- to_java(ZonedDateTime)
40
- end
41
-
42
- private
43
-
44
- #
45
- # Convert to floating point seconds if the given value reponds to to_nanos
46
- #
47
- # @param [Numeric,Duration] value The duration to convert into seconds.
48
- #
49
- # @return [Numeric] The number of seconds from the given value
50
- #
51
- def to_seconds(value)
52
- value = value.to_nanos.to_f / 1_000_000_000 if value.respond_to? :to_nanos
53
- value
54
- end
55
- end
56
- end
57
- end
58
- end
59
- end
60
-
61
- Time.prepend(OpenHAB::DSL::MonkeyPatch::Ruby::TimeExtensions)
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'pathname'
4
-
5
- module OpenHAB
6
- #
7
- # Return the OpenHAB conf directory as a ruby pathname
8
- #
9
- # @return [Pathname] OpenHAB conf path
10
- #
11
- def self.conf_root
12
- Pathname.new(ENV.fetch('OPENHAB_CONF', nil))
13
- end
14
-
15
- module DSL
16
- #
17
- # Provides access to OpenHAB attributes
18
- #
19
- module Core
20
- include OpenHAB::Log
21
-
22
- module_function
23
-
24
- # @deprecated Please use {OpenHAB.conf_root} instead
25
- def __conf__
26
- OpenHAB.conf_root
27
- end
28
- end
29
- end
30
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module OpenHAB
4
- module DSL
5
- #
6
- # Provides support for interacting with OpenHAB Persistence service
7
- #
8
- module Persistence
9
- module_function
10
-
11
- #
12
- # Sets a thread local variable to set the default persistence service
13
- # for method calls inside the block
14
- #
15
- # @param [Object] service service either as a String or a Symbol
16
- # @yield [] Block executed in context of the supplied persistence service
17
- #
18
- #
19
- def persistence(service)
20
- Thread.current.thread_variable_set(:persistence_service, service)
21
- yield
22
- ensure
23
- Thread.current.thread_variable_set(:persistence_service, nil)
24
- end
25
- end
26
- end
27
- end
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module OpenHAB
4
- module DSL
5
- module Rules
6
- #
7
- # Extends OpenHAB events
8
- #
9
- module Events
10
- java_import org.openhab.core.events.AbstractEvent
11
-
12
- # Add attachments to ItemEvent
13
- class AbstractEvent
14
- attr_accessor :attachment
15
- end
16
- end
17
- end
18
- end
19
- end
@@ -1,160 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'method_source'
4
-
5
- require 'openhab/core/thread_local'
6
- require 'openhab/core/services'
7
- require 'openhab/log/logger'
8
- require_relative 'rule_config'
9
- require_relative 'automation_rule'
10
- require_relative 'guard'
11
- require_relative 'name_inference'
12
-
13
- module OpenHAB
14
- #
15
- # Contains code to create an OpenHAB DSL
16
- #
17
- module DSL
18
- #
19
- # Creates and manages OpenHAB Rules
20
- #
21
- module Rules
22
- #
23
- # The main rule DSL method
24
- #
25
- module Rule
26
- include OpenHAB::Log
27
-
28
- @script_rules = []
29
-
30
- @automation_manager = OpenHAB::Core.automation_manager
31
- @registry = OpenHAB::Core.rule_registry
32
- class << self
33
- attr_reader :script_rules, :automation_manager, :registry
34
- end
35
-
36
- module_function
37
-
38
- #
39
- # Create a new rule
40
- #
41
- # @param [String] rule_name The rule name
42
- # @yield [] Block executed in context of a RuleConfig
43
- #
44
- #
45
- def rule(rule_name = nil, id: nil, script: nil, &block) # rubocop:disable Metrics
46
- id ||= NameInference.infer_rule_id_from_block(block)
47
- script ||= block.source rescue nil # rubocop:disable Style/RescueModifier
48
-
49
- OpenHAB::Core::ThreadLocal.thread_local(RULE_NAME: rule_name) do
50
- @rule_name = rule_name
51
-
52
- config = RuleConfig.new(block.binding)
53
- config.uid(id)
54
- config.instance_exec(config, &block)
55
- config.guard = Guard::Guard.new(run_context: config.caller, only_if: config.only_if,
56
- not_if: config.not_if)
57
-
58
- rule_name ||= NameInference.infer_rule_name(config)
59
- rule_name ||= id
60
-
61
- config.name(rule_name)
62
- logger.trace { config.inspect }
63
- process_rule_config(config, script)
64
- end
65
- rescue StandardError => e
66
- logger.log_exception(e, @rule_name)
67
- end
68
-
69
- #
70
- # Cleanup rules in this script file
71
- #
72
- def self.cleanup_rules
73
- @script_rules.each(&:cleanup)
74
- end
75
- Core::ScriptHandling.script_unloaded { cleanup_rules }
76
-
77
- private
78
-
79
- #
80
- # Process a rule based on the supplied configuration
81
- #
82
- # @param [RuleConfig] config for rule
83
- #
84
- #
85
- def process_rule_config(config, script) # rubocop:disable Metrics
86
- return unless create_rule?(config)
87
-
88
- rule = AutomationRule.new(config: config)
89
- Rule.script_rules << rule
90
- added_rule = add_rule(rule)
91
- # add config so that MainUI can show the script
92
- added_rule.actions.first.configuration.put('type', 'application/x-ruby')
93
- added_rule.actions.first.configuration.put('script', script)
94
-
95
- rule.execute(nil, { 'event' => Struct.new(:attachment).new(config.start_attachment) }) if config.on_start?
96
- added_rule
97
- end
98
-
99
- #
100
- # Should a rule be created based on rule configuration
101
- #
102
- # @param [RuleConfig] config to check
103
- #
104
- # @return [Boolean] true if it should be created, false otherwise
105
- #
106
- def create_rule?(config)
107
- if !triggers?(config)
108
- logger.warn "Rule '#{config.name}' has no triggers, not creating rule"
109
- elsif !execution_blocks?(config)
110
- logger.warn "Rule '#{config.name}' has no execution blocks, not creating rule"
111
- elsif !config.enabled
112
- logger.trace "Rule '#{config.name}' marked as disabled, not creating rule."
113
- else
114
- return true
115
- end
116
- false
117
- end
118
-
119
- #
120
- # Check if the rule has any triggers
121
- #
122
- # @param [RuleConfig] config to check for triggers
123
- #
124
- # @return [Boolean] True if rule has triggers, false otherwise
125
- #
126
- def triggers?(config)
127
- config.on_start? || config.triggers.length.positive?
128
- end
129
-
130
- #
131
- # Check if the rule has any execution blocks
132
- #
133
- # @param [RuleConfig] config to check for triggers
134
- #
135
- # @return [Boolean] True if rule has execution blocks, false otherwise
136
- #
137
- def execution_blocks?(config)
138
- (config.run || []).length.positive?
139
- end
140
-
141
- #
142
- # Add a rule to the automation managed
143
- #
144
- # @param [org.openhab.core.automation.module.script.rulesupport.shared.simple.SimpleRule] rule to add
145
- #
146
- #
147
- def add_rule(rule)
148
- base_uid = rule.uid
149
- duplicate_index = 1
150
- while $rules.get(rule.uid)
151
- duplicate_index += 1
152
- rule.uid = "#{base_uid} (#{duplicate_index})"
153
- end
154
- logger.trace("Adding rule: #{rule.inspect}")
155
- Rule.automation_manager.addRule(rule)
156
- end
157
- end
158
- end
159
- end
160
- end