openhab-scripting 2.14.3 → 2.15.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a7d7048855cb4074024e55eb6bc763859c7c41220108dc2115cde683b7d84eb2
4
- data.tar.gz: a9fdcb6e2605eab24f8c0dd74a1a307bd50c12e3b1dc0c499ae5d8627a8c4eb1
3
+ metadata.gz: e06a1b4a2697fe4ac5d03467fb324ce1cf4d6e674946a7d96dae8928974b2460
4
+ data.tar.gz: 522268dcd796de02ee8dde9417d5a044dab87ef8a8d8100957268fc544443d3b
5
5
  SHA512:
6
- metadata.gz: c513245aa07d4a4cd21490c3761e2a3ea93f108ff9751ab7f679e79e30941ebe411e7cc3eac9312f51913988122dcaea2f228dbc15d3caa71e5aea6ffe1f7d2e
7
- data.tar.gz: b54ef2191000331f5cfc671e5b3ec0183661ea3c56a80d55d269873e18bb5e340225bb1994db5748d462c49d5ba876aa8d8be60ec61e4b9b49868ff31ad9a5cb
6
+ metadata.gz: 51ea02b7ccc10fc831a17627e31f0b0d7e250e778a08c8e7d226118c61cb98a07761eabee1299e9c6a4a83e949b448c20f1c7ebb7e5877939b601f1108929cec
7
+ data.tar.gz: 1ea8435d4826e815c212e422e714ac0480266b2ebc283c4471116cf08f45b3336758c75a1b74d00d631f1c7b729e078620dd72d4e9b853465eee06010e2ea027
@@ -19,6 +19,7 @@ require 'core/dsl/gems'
19
19
  require 'core/dsl/units'
20
20
  require 'core/dsl/types/quantity'
21
21
  require 'core/dsl/states'
22
+ require 'core/dsl/persistence'
22
23
 
23
24
  module OpenHAB
24
25
  #
@@ -30,6 +31,7 @@ module OpenHAB
30
31
  #
31
32
  module DSL
32
33
  # Extend the calling module/class with the DSL
34
+ # rubocop: disable Metrics/MethodLength
33
35
  def self.extended(base)
34
36
  base.send :include, OpenHAB::Core::DSL::Rule
35
37
  base.send :include, OpenHAB::Core::DSL::Items
@@ -40,8 +42,10 @@ module OpenHAB
40
42
  base.send :include, OpenHAB::Core::DSL::Timers
41
43
  base.send :include, OpenHAB::Core::DSL::States
42
44
  base.send :include, OpenHAB::Core::DSL::Tod
45
+ base.send :include, OpenHAB::Core::DSL::Persistence
43
46
  base.send :include, Things
44
47
  end
48
+ # rubocop: enable Metrics/MethodLength
45
49
  end
46
50
  end
47
51
  end
@@ -6,6 +6,7 @@ require 'bigdecimal'
6
6
 
7
7
  # Monkey patch items
8
8
  require 'openhab/core/dsl/monkey_patch/items/metadata'
9
+ require 'openhab/core/dsl/monkey_patch/items/persistence'
9
10
  require 'openhab/core/dsl/monkey_patch/items/contact_item'
10
11
  require 'openhab/core/dsl/monkey_patch/items/dimmer_item'
11
12
  require 'openhab/core/dsl/monkey_patch/items/switch_item'
@@ -127,4 +128,5 @@ class Java::OrgOpenhabCoreItems::GenericItem
127
128
  # rubocop:enable Style/ClassAndModuleChildren
128
129
  prepend OpenHAB::Core::DSL::MonkeyPatch::Items::ItemExtensions
129
130
  prepend OpenHAB::Core::DSL::MonkeyPatch::Items::Metadata
131
+ prepend OpenHAB::Core::DSL::MonkeyPatch::Items::Persistence
130
132
  end
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenHAB
4
+ module Core
5
+ module DSL
6
+ module MonkeyPatch
7
+ module Items
8
+ #
9
+ # Persistence extension for Items
10
+ #
11
+ module Persistence
12
+ %w[persist last_update].each do |method|
13
+ define_method(method) do |service = nil|
14
+ service ||= persistence_service
15
+ PersistenceExtensions.public_send(method, self, service&.to_s)
16
+ end
17
+ end
18
+
19
+ #
20
+ # Return the previous state of the item
21
+ #
22
+ # @param skip_equal [Boolean] if true, skips equal state values and
23
+ # searches the first state not equal the current state
24
+ # @param service [String] the name of the PersistenceService to use
25
+ #
26
+ # @return the previous state or nil if no previous state could be found,
27
+ # or if the default persistence service is not configured or
28
+ # does not refer to a valid service
29
+ #
30
+ def previous_state(service = nil, skip_equal: false)
31
+ service ||= persistence_service
32
+ PersistenceExtensions.previous_state(self, skip_equal, service&.to_s)
33
+ end
34
+
35
+ %w[
36
+ average_since
37
+ changed_since
38
+ delta_since
39
+ deviation_since
40
+ evolution_rate
41
+ historic_state
42
+ maximum_since
43
+ minimum_since
44
+ sum_since
45
+ updated_since
46
+ variance_since
47
+ ].each do |method|
48
+ define_method(method) do |timestamp, service = nil|
49
+ service ||= persistence_service
50
+ if timestamp.is_a? Java::JavaTimeTemporal::TemporalAmount
51
+ timestamp = Java::JavaTime::ZonedDateTime.now.minus(timestamp)
52
+ end
53
+ PersistenceExtensions.public_send(method, self, timestamp, service&.to_s)
54
+ end
55
+ end
56
+
57
+ private
58
+
59
+ #
60
+ # Get the specified persistence service from the current thread local variable
61
+ #
62
+ # @return [Object] Persistence service name as String or Symbol, or nil if not set
63
+ #
64
+ def persistence_service
65
+ Thread.current.thread_variable_get(:persistence_service)
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenHAB
4
+ module Core
5
+ module DSL
6
+ #
7
+ # Provides support for interacting with OpenHAB Persistence service
8
+ #
9
+ module Persistence
10
+ #
11
+ # Sets a thread local variable to set the default persistence service
12
+ # for method calls inside the block
13
+ #
14
+ # @param [Object] Persistence service either as a String or a Symbol
15
+ # @yield [] Block executed in context of the supplied persistence service
16
+ #
17
+ #
18
+ def persistence(service)
19
+ Thread.current.thread_variable_set(:persistence_service, service)
20
+ yield
21
+ ensure
22
+ Thread.current.thread_variable_set(:persistence_service, nil)
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -5,5 +5,5 @@
5
5
  #
6
6
  module OpenHAB
7
7
  # @return [String] Version of OpenHAB helper libraries
8
- VERSION = '2.14.3'
8
+ VERSION = '2.15.0'
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: openhab-scripting
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.14.3
4
+ version: 2.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian O'Connell
@@ -54,6 +54,7 @@ files:
54
54
  - lib/openhab/core/dsl/monkey_patch/items/group_item.rb
55
55
  - lib/openhab/core/dsl/monkey_patch/items/items.rb
56
56
  - lib/openhab/core/dsl/monkey_patch/items/metadata.rb
57
+ - lib/openhab/core/dsl/monkey_patch/items/persistence.rb
57
58
  - lib/openhab/core/dsl/monkey_patch/items/switch_item.rb
58
59
  - lib/openhab/core/dsl/monkey_patch/ruby/number.rb
59
60
  - lib/openhab/core/dsl/monkey_patch/ruby/range.rb
@@ -63,6 +64,7 @@ files:
63
64
  - lib/openhab/core/dsl/monkey_patch/types/open_closed_type.rb
64
65
  - lib/openhab/core/dsl/monkey_patch/types/percent_type.rb
65
66
  - lib/openhab/core/dsl/monkey_patch/types/types.rb
67
+ - lib/openhab/core/dsl/persistence.rb
66
68
  - lib/openhab/core/dsl/property.rb
67
69
  - lib/openhab/core/dsl/rule/automation_rule.rb
68
70
  - lib/openhab/core/dsl/rule/guard.rb