openhab-scripting 3.2.1 → 3.4.3

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: 90af7470bbd47fa813a1a4a5a9083f178a36225ab6f9cfbd2ff1852cc0eb4c92
4
- data.tar.gz: 789d9c72ce03d498416bf53c86d6b7f895df8296d849f702b59398e831aad6f1
3
+ metadata.gz: 9de0c3d111dc483c93a2338e5f76b4593c7c14765a9fd7de06088668b54258c2
4
+ data.tar.gz: 5947a40d76a62377f7c447251ecd058c453ca5432f0a94e192e7099e68c59b7e
5
5
  SHA512:
6
- metadata.gz: 9066fe74d2d508e06ce9a62244a19a75470fcffb85bdbcaa2c899b5220a15da351ae4f55be08fb80d3c3222a1a26d16471420049b8621a60d143f16b867d7180
7
- data.tar.gz: 53d1df31662e7552566d6dd92237b862b32f988e4edf42bc95b44fff3af425e5a038771c2372e2fe71928867c41962907825a24e05fbf3e91ed31f5ff6ee2778
6
+ metadata.gz: b6922b2367a0fb9a6f0091ad6538cf8e03a83bf4a613c764528895c432c290f2819a65ece81bb4bc166c18b8e962559bb0fd33526a43d4ae96c2d08a83200e33
7
+ data.tar.gz: fc9c9c10d35a896cc6643fe6dd33aab04cdffc74fb4005ced6beaa2392254bcfcc89b9c03d1d39c1827a08548e89adef16c4bb6da21fd131c8775a8df3433785
@@ -1,9 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'base64'
4
+ require 'pathname'
4
5
  require 'net/http'
5
6
  require 'java'
6
- require 'mimemagic'
7
+ require 'marcel'
7
8
  require 'openhab/dsl/items/item_command'
8
9
  require 'openhab/dsl/items/item_delegate'
9
10
 
@@ -57,7 +58,7 @@ module OpenHAB
57
58
  #
58
59
  def update_from_file(file, mime_type: nil)
59
60
  file_data = IO.binread(file)
60
- mime_type ||= (MimeMagic.by_path(file) || MimeMagic.by_magic(file_data))&.type
61
+ mime_type ||= Marcel::MimeType.for(Pathname.new(file)) || Marcel::MimeType.for(file_data)
61
62
  update_from_bytes(file_data, mime_type: mime_type)
62
63
  end
63
64
 
@@ -130,7 +131,7 @@ module OpenHAB
130
131
  #
131
132
  def detect_mime_from_bytes(bytes:)
132
133
  logger.trace('Detecting mime type from file image contents')
133
- MimeMagic.by_magic(bytes)&.type
134
+ Marcel::MimeType.for(bytes)
134
135
  end
135
136
  end
136
137
  end
@@ -30,7 +30,7 @@ module OpenHAB
30
30
 
31
31
  def initialize(metadata: nil, key: nil, value: nil, config: nil)
32
32
  @metadata = metadata || Metadata.new(key || MetadataKey.new('', ''), value&.to_s, config)
33
- super(@metadata&.configuration)
33
+ super(to_ruby(@metadata&.configuration))
34
34
  end
35
35
 
36
36
  #
@@ -85,6 +85,44 @@ module OpenHAB
85
85
  def to_a
86
86
  [@metadata&.value, @metadata&.configuration || {}]
87
87
  end
88
+
89
+ private
90
+
91
+ #
92
+ # Recursively convert the supplied Hash object into a Ruby Hash and recreate the keys and values
93
+ #
94
+ # @param [Hash] Hash to convert
95
+ #
96
+ # @return [Hash] The converted hash
97
+ #
98
+ def to_ruby_hash(hash)
99
+ return unless hash.respond_to? :each_with_object
100
+
101
+ hash.each_with_object({}) { |(key, value), ruby_hash| ruby_hash[to_ruby(key)] = to_ruby(value) }
102
+ end
103
+
104
+ #
105
+ # Recursively convert the supplied array to a Ruby array and recreate all String values
106
+ #
107
+ # @param [Object] array to convert
108
+ #
109
+ # @return [Array] The converted array
110
+ #
111
+ def to_ruby_array(array)
112
+ return unless array.respond_to? :each_with_object
113
+
114
+ array.each_with_object([]) { |value, ruby_array| ruby_array << to_ruby(value) }
115
+ end
116
+
117
+ # Convert the given object to Ruby equivalent
118
+ def to_ruby(value)
119
+ case value
120
+ when Hash, Java::JavaUtil::Map then to_ruby_hash(value)
121
+ when Array, Java::JavaUtil::List then to_ruby_array(value)
122
+ when String then String.new(value)
123
+ else value
124
+ end
125
+ end
88
126
  end
89
127
 
90
128
  #
@@ -9,6 +9,18 @@ module OpenHAB
9
9
  #
10
10
  module Persistence
11
11
  java_import Java::OrgOpenhabCoreTypesUtil::UnitUtils
12
+
13
+ # A wrapper for OpenHAB's HistoricItem that returns the state directly
14
+ class HistoricState < SimpleDelegator
15
+ attr_reader :timestamp, :state
16
+
17
+ def initialize(state, timestamp)
18
+ @state = state
19
+ @timestamp = timestamp
20
+ super(@state)
21
+ end
22
+ end
23
+
12
24
  # All persistence methods that could return a Quantity
13
25
  QUANTITY_METHODS = %i[average_since
14
26
  delta_since
@@ -45,13 +57,18 @@ module OpenHAB
45
57
  #
46
58
  def previous_state(service = nil, skip_equal: false)
47
59
  service ||= persistence_service
48
- PersistenceExtensions.previous_state(self, skip_equal, service&.to_s)
60
+ result = PersistenceExtensions.previous_state(self, skip_equal, service&.to_s)
61
+ HistoricState.new(quantify(result.state), result.timestamp)
49
62
  end
50
63
 
51
64
  PERSISTENCE_METHODS.each do |method|
52
65
  define_method(method) do |timestamp, service = nil|
53
66
  service ||= persistence_service
54
67
  result = PersistenceExtensions.public_send(method, self, to_zdt(timestamp), service&.to_s)
68
+ if result.is_a? Java::OrgOpenhabCorePersistence::HistoricItem
69
+ return HistoricState.new(quantify(result.state), result.timestamp)
70
+ end
71
+
55
72
  QUANTITY_METHODS.include?(method) ? quantify(result) : result
56
73
  end
57
74
  end
@@ -30,11 +30,8 @@ module OpenHAB
30
30
  dow: '?'
31
31
  }
32
32
  end
33
- # Rubocop check is disabled because YARD cannot process the method if placed in front of
34
- # the method definition
35
- # rubocop:disable Style/AccessModifierDeclarations
33
+
36
34
  module_function :cron_expression_map
37
- # rubocop:enable Style/AccessModifierDeclarations
38
35
 
39
36
  # @return [Hash] Map of days of the week from symbols to to OpenHAB cron strings
40
37
  DAY_OF_WEEK_MAP = {
@@ -11,6 +11,7 @@ module OpenHAB
11
11
  # Support for OpenHAB Things
12
12
  #
13
13
  module Things
14
+ java_import Java::OrgOpenhabCoreThing::ThingStatus
14
15
  include OpenHAB::Log
15
16
 
16
17
  #
@@ -25,6 +26,22 @@ module OpenHAB
25
26
  define_action_methods
26
27
  end
27
28
 
29
+ #
30
+ # Defines boolean thing status methods
31
+ # uninitialized?
32
+ # initializing?
33
+ # unknown?
34
+ # online?
35
+ # offline?
36
+ # removing?
37
+ # removed?
38
+ #
39
+ # @return [Boolean] true if the thing status matches the name
40
+ #
41
+ ThingStatus.constants.each do |thingstatus|
42
+ define_method("#{thingstatus.to_s.downcase}?") { status == ThingStatus.value_of(thingstatus) }
43
+ end
44
+
28
45
  private
29
46
 
30
47
  java_import 'org.openhab.core.automation.annotation.RuleAction'
@@ -5,5 +5,5 @@
5
5
  #
6
6
  module OpenHAB
7
7
  # @return [String] Version of OpenHAB helper libraries
8
- VERSION = '3.2.1'
8
+ VERSION = '3.4.3'
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.2.1
4
+ version: 3.4.3
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-03-11 00:00:00.000000000 Z
11
+ date: 2021-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -25,19 +25,19 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.2'
27
27
  - !ruby/object:Gem::Dependency
28
- name: mimemagic
28
+ name: marcel
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.3'
33
+ version: '1.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.3'
40
+ version: '1.0'
41
41
  description: JRuby Helper Libraries for OpenHAB Scripting
42
42
  email:
43
43
  - broconne@gmail.com
@@ -133,7 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
133
  version: '0'
134
134
  requirements: []
135
135
  rubyforge_project:
136
- rubygems_version: 2.7.6.2
136
+ rubygems_version: 2.7.6.3
137
137
  signing_key:
138
138
  specification_version: 4
139
139
  summary: JRuby Helper Libraries for OpenHAB Scripting