openhab-scripting 5.38.3 → 5.38.4

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: 5d7aee54d03e87992e3febb4d12eef831d42156837dcd7b8ed61e09edbf78a3d
4
- data.tar.gz: c9a792688e50984ef7463eb6e49abbfbdbccd4ab619d704b3d4eca0537f7a5f7
3
+ metadata.gz: de1cd952cd575534190d36d824d13a2b39e0eff5411471d2846a343a48830b1e
4
+ data.tar.gz: 5501e9e018cdf251f42253d887f261d49977e626b1d8cf9f88820a96b89840e8
5
5
  SHA512:
6
- metadata.gz: 3e23bd7be96cbaf3e3b6ad00d731562f2059e1f2061f5e34f2bf25ef1087b06ccd77bc916ecb8b2aff55ce6de75cb24feac730fa2a2171f444e518ac1688c1a7
7
- data.tar.gz: '0149d4812c49c7bdd7ae5b7919deeccc068bfc1acf42b94c8962e67a8657252f55269648706759f9f55cb7e73573314273b73f9a6af7b2264111c8c87874c5b1'
6
+ metadata.gz: e4ae9164c16df30f5c2f66e02663628b6be1310d8940bc56a60c60dd1e26af9db38a1f17f42ef63cf1bc415924cd0fc5e4945a9d03320c79f77bd3136b198d29
7
+ data.tar.gz: 941cd83990e52ec3fe1f6e9a4728f7d0ea2e0018991d2692ac4eb0398071f1869961a4e49e389385bb0ceb320c7401778c3e0897010ed37aaff1877e322a7257
@@ -94,7 +94,7 @@ module OpenHAB
94
94
  # @deprecated OH 4.1
95
95
  if Core.version >= Core::V4_2
96
96
  buttons ||= []
97
- buttons = buttons.map { |title, action| "#{title}=#{action}" } if buttons.is_a?(Hash)
97
+ buttons = buttons.map { |button_title, action| "#{button_title}=#{action}" } if buttons.is_a?(Hash)
98
98
  raise ArgumentError, "buttons must contain (0..3) elements." unless (0..3).cover?(buttons.size)
99
99
 
100
100
  attachment = "item:#{attachment.name}" if attachment.is_a?(Item) && attachment.image_item?
@@ -231,7 +231,7 @@ module OpenHAB
231
231
  # @return [void]
232
232
  def tags=(values)
233
233
  modify do
234
- values = DSL::Items::ItemBuilder.normalize_tags(*values)
234
+ values = DSL::Items::Tags.normalize(*values)
235
235
  next if values.to_set == tags.to_set
236
236
 
237
237
  @modified = true
@@ -2,6 +2,8 @@
2
2
 
3
3
  require "forwardable"
4
4
 
5
+ require_relative "hash"
6
+
5
7
  module OpenHAB
6
8
  module Core
7
9
  module Items
@@ -5,6 +5,9 @@ module OpenHAB
5
5
  module Items
6
6
  # Contains classes wrapping interactions with item metadata.
7
7
  module Metadata
8
+ autoload :Provider, "openhab/core/items/metadata/provider"
9
+ autoload :NamespaceHash, "openhab/core/items/metadata/namespace_hash"
10
+ autoload :Hash, "openhab/core/items/metadata/hash"
8
11
  end
9
12
  end
10
13
  end
@@ -4,7 +4,6 @@ require "singleton"
4
4
 
5
5
  require "openhab/core/entity_lookup"
6
6
  require "openhab/core/lazy_array"
7
- require "openhab/dsl/items/builder"
8
7
 
9
8
  module OpenHAB
10
9
  module Core
data/lib/openhab/core.rb CHANGED
@@ -149,5 +149,6 @@ end
149
149
  require_relative "core/provider"
150
150
 
151
151
  Dir[File.expand_path("core/**/*.rb", __dir__)].each do |f|
152
- require f
152
+ # metadata is autoloaded
153
+ require f unless f.include?("/metadata/")
153
154
  end
@@ -278,27 +278,6 @@ module OpenHAB
278
278
  def item_factory
279
279
  @item_factory ||= OpenHAB::OSGi.service("org.openhab.core.items.ItemFactory")
280
280
  end
281
-
282
- #
283
- # Convert the given array to an array of strings.
284
- # Convert Semantics classes to their simple name.
285
- #
286
- # @param [String,Symbol,Semantics::Tag] tags A list of strings, symbols, or Semantics classes
287
- # @return [Array] An array of strings
288
- #
289
- # @example
290
- # tags = normalize_tags("tag1", Semantics::LivingRoom)
291
- #
292
- # @!visibility private
293
- def normalize_tags(*tags)
294
- tags.compact.map do |tag|
295
- case tag
296
- when String then tag
297
- when Symbol, Semantics::SemanticTag then tag.to_s
298
- else raise ArgumentError, "`#{tag}` must be a subclass of Semantics::Tag, a `Symbol`, or a `String`."
299
- end
300
- end
301
- end
302
281
  end
303
282
 
304
283
  # @param dimension [Symbol, String, nil] The unit dimension for a {NumberItem} (see {ItemBuilder#dimension})
@@ -450,7 +429,7 @@ module OpenHAB
450
429
  def tag(*tags)
451
430
  return @tags if tags.empty?
452
431
 
453
- @tags.concat(self.class.normalize_tags(*tags))
432
+ @tags.concat(Tags.normalize(*tags))
454
433
  end
455
434
  alias_method :tags, :tag
456
435
 
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenHAB
4
+ module DSL
5
+ module Items
6
+ # A helper module for handling tags in OpenHAB DSL.
7
+ module Tags
8
+ module_function
9
+
10
+ #
11
+ # Convert the given array to an array of strings.
12
+ # Convert Semantics classes to their simple name.
13
+ #
14
+ # @param [String,Symbol,Semantics::Tag] tags A list of strings, symbols, or Semantics classes
15
+ # @return [Array] An array of strings
16
+ #
17
+ # @example
18
+ # tags = normalize("tag1", Semantics::LivingRoom)
19
+ #
20
+ # @!visibility private
21
+ def normalize(*tags)
22
+ tags.compact.map do |tag|
23
+ case tag
24
+ when String then tag
25
+ when Symbol, Semantics::SemanticTag then tag.to_s
26
+ else raise ArgumentError,
27
+ "`#{tag}` must be a subclass of Semantics::Tag, a `Symbol`, or a `String`."
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -4,6 +4,7 @@ require "forwardable"
4
4
 
5
5
  require_relative "property"
6
6
  require_relative "guard"
7
+ require_relative "triggers"
7
8
  require_relative "rule_triggers"
8
9
  require_relative "terse"
9
10
 
@@ -2212,7 +2213,7 @@ module OpenHAB
2212
2213
  # @return [void]
2213
2214
  def add_tag(tag)
2214
2215
  # have to normalize tags first
2215
- @tags = DSL::Items::ItemBuilder.normalize_tags(*tags)
2216
+ @tags = DSL::Items::Tags.normalize(*tags)
2216
2217
  @tags << tag unless @tags.include?(tag)
2217
2218
  end
2218
2219
 
@@ -2240,7 +2241,7 @@ module OpenHAB
2240
2241
  # @return [true,false] true if it should be created, false otherwise
2241
2242
  #
2242
2243
  def create_rule?
2243
- @tags = DSL::Items::ItemBuilder.normalize_tags(*tags)
2244
+ @tags = DSL::Items::Tags.normalize(*tags)
2244
2245
  return true if tags.intersect?(%w[Script Scene])
2245
2246
 
2246
2247
  if !triggers?
@@ -10,3 +10,7 @@ module OpenHAB
10
10
  end
11
11
  end
12
12
  end
13
+
14
+ Dir[File.expand_path("triggers/**/*.rb", __dir__)].each do |f|
15
+ require f
16
+ end
@@ -360,7 +360,7 @@ module OpenHAB
360
360
  @type = type
361
361
  @label = label
362
362
  @config = config&.transform_keys(&:to_s)
363
- @default_tags = Items::ItemBuilder.normalize_tags(*Array.wrap(default_tags))
363
+ @default_tags = Items::Tags.normalize(*Array.wrap(default_tags))
364
364
  @properties = properties&.transform_keys(&:to_s)
365
365
  @description = description
366
366
  @accepted_item_type = accepted_item_type
@@ -4,6 +4,6 @@ module OpenHAB
4
4
  module DSL
5
5
  # Version of openHAB helper libraries
6
6
  # @return [String]
7
- VERSION = "5.38.3"
7
+ VERSION = "5.38.4"
8
8
  end
9
9
  end
data/lib/openhab/dsl.rb CHANGED
@@ -10,7 +10,8 @@ require_relative "osgi"
10
10
  require_relative "core"
11
11
 
12
12
  Dir[File.expand_path("dsl/**/*.rb", __dir__)].each do |f|
13
- require f
13
+ # some files are excluded because they're autoloaded
14
+ require f unless f.include?("/rules/") || f =~ %r{dsl/(items|sitemaps|things)/builder.rb$}
14
15
  end
15
16
 
16
17
  require_relative "core_ext"
@@ -27,6 +28,32 @@ module OpenHAB
27
28
  # inside of other classes, or include the module.
28
29
  #
29
30
  module DSL
31
+ module Items
32
+ autoload :Builder, "openhab/dsl/items/builder"
33
+ autoload :BaseBuilderDSL, "openhab/dsl/items/builder"
34
+ autoload :ItemBuilder, "openhab/dsl/items/builder"
35
+ end
36
+
37
+ module Things
38
+ autoload :Builder, "openhab/dsl/things/builder"
39
+ end
40
+
41
+ module Sitemaps
42
+ autoload :Builder, "openhab/dsl/sitemaps/builder"
43
+ autoload :LinkableWidgetBuilder, "openhab/dsl/sitemaps/builder"
44
+ end
45
+
46
+ module Rules
47
+ # sorted alphabetically
48
+ autoload :AutomationRule, "openhab/dsl/rules/automation_rule"
49
+ autoload :Builder, "openhab/dsl/rules/builder"
50
+ autoload :Guard, "openhab/dsl/rules/guard"
51
+ autoload :NameInference, "openhab/dsl/rules/name_inference"
52
+ autoload :Property, "openhab/dsl/rules/property"
53
+ autoload :RuleTriggers, "openhab/dsl/rules/rule_triggers"
54
+ autoload :Terse, "openhab/dsl/rules/terse"
55
+ end
56
+
30
57
  # include this before Core::Actions so that Core::Action's method_missing
31
58
  # takes priority
32
59
  include Core::EntityLookup
@@ -26,6 +26,9 @@ module OpenHAB
26
26
  end
27
27
 
28
28
  def html_markup_markdown(text)
29
+ # Remove the "omit from toc" comments
30
+ text.gsub!(" <!-- omit from toc -->", "")
31
+
29
32
  result = super
30
33
 
31
34
  html = Nokogiri::HTML5.fragment(result)
@@ -42,13 +45,10 @@ module OpenHAB
42
45
  end
43
46
  end
44
47
 
45
- # wtf commonmarker, you don't generate anchors?!
46
- html.css("h1, h2, h3, h4, h5, h6").each do |header|
47
- next if header["id"]
48
-
49
- id = header.text.strip.downcase.delete(%(.?"')).gsub(/[ ,]+/, "-")
50
- header["id"] = id
51
- header.prepend_child(%(<a href="##{id}" class="header-anchor">#</a>))
48
+ # add the "#" mouse-over to header links
49
+ html.css(Array.new(6) { |i| "h#{i + 1} > a.anchor" }.join(", ")).each do |anchor|
50
+ anchor["class"] = "header-anchor"
51
+ anchor.content = "#"
52
52
  end
53
53
 
54
54
  html.to_s
@@ -55,9 +55,6 @@ module OpenHAB
55
55
  end
56
56
  end
57
57
 
58
- # Remove the "omit from toc" comments
59
- result.gsub!(" <!-- omit from toc -->", "")
60
-
61
58
  # re-link files in docs/*.md. They're written so they work on github without any
62
59
  # processing
63
60
  result.gsub!(%r{\[([A-Za-z0-9,. ]+)\]\(([A-Za-z0-9./-]+)\)}) do |str|
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: 5.38.3
4
+ version: 5.38.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian O'Connell
@@ -53,160 +53,6 @@ dependencies:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
55
  version: '1.0'
56
- - !ruby/object:Gem::Dependency
57
- name: cucumber
58
- requirement: !ruby/object:Gem::Requirement
59
- requirements:
60
- - - "~>"
61
- - !ruby/object:Gem::Version
62
- version: '9.2'
63
- type: :development
64
- prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - "~>"
68
- - !ruby/object:Gem::Version
69
- version: '9.2'
70
- - !ruby/object:Gem::Dependency
71
- name: cuke_linter
72
- requirement: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - "~>"
75
- - !ruby/object:Gem::Version
76
- version: '1.2'
77
- type: :development
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - "~>"
82
- - !ruby/object:Gem::Version
83
- version: '1.2'
84
- - !ruby/object:Gem::Dependency
85
- name: gem-release
86
- requirement: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - "~>"
89
- - !ruby/object:Gem::Version
90
- version: '2.2'
91
- type: :development
92
- prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - "~>"
96
- - !ruby/object:Gem::Version
97
- version: '2.2'
98
- - !ruby/object:Gem::Dependency
99
- name: httparty
100
- requirement: !ruby/object:Gem::Requirement
101
- requirements:
102
- - - "~>"
103
- - !ruby/object:Gem::Version
104
- version: '0.20'
105
- type: :development
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - "~>"
110
- - !ruby/object:Gem::Version
111
- version: '0.20'
112
- - !ruby/object:Gem::Dependency
113
- name: persistent_httparty
114
- requirement: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - "~>"
117
- - !ruby/object:Gem::Version
118
- version: '0.1'
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - "~>"
124
- - !ruby/object:Gem::Version
125
- version: '0.1'
126
- - !ruby/object:Gem::Dependency
127
- name: process_exists
128
- requirement: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - "~>"
131
- - !ruby/object:Gem::Version
132
- version: '0.2'
133
- type: :development
134
- prerelease: false
135
- version_requirements: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - "~>"
138
- - !ruby/object:Gem::Version
139
- version: '0.2'
140
- - !ruby/object:Gem::Dependency
141
- name: rake
142
- requirement: !ruby/object:Gem::Requirement
143
- requirements:
144
- - - "~>"
145
- - !ruby/object:Gem::Version
146
- version: '13.0'
147
- type: :development
148
- prerelease: false
149
- version_requirements: !ruby/object:Gem::Requirement
150
- requirements:
151
- - - "~>"
152
- - !ruby/object:Gem::Version
153
- version: '13.0'
154
- - !ruby/object:Gem::Dependency
155
- name: rspec
156
- requirement: !ruby/object:Gem::Requirement
157
- requirements:
158
- - - "~>"
159
- - !ruby/object:Gem::Version
160
- version: '3.11'
161
- type: :development
162
- prerelease: false
163
- version_requirements: !ruby/object:Gem::Requirement
164
- requirements:
165
- - - "~>"
166
- - !ruby/object:Gem::Version
167
- version: '3.11'
168
- - !ruby/object:Gem::Dependency
169
- name: timecop
170
- requirement: !ruby/object:Gem::Requirement
171
- requirements:
172
- - - "~>"
173
- - !ruby/object:Gem::Version
174
- version: '0.9'
175
- type: :development
176
- prerelease: false
177
- version_requirements: !ruby/object:Gem::Requirement
178
- requirements:
179
- - - "~>"
180
- - !ruby/object:Gem::Version
181
- version: '0.9'
182
- - !ruby/object:Gem::Dependency
183
- name: tty-command
184
- requirement: !ruby/object:Gem::Requirement
185
- requirements:
186
- - - "~>"
187
- - !ruby/object:Gem::Version
188
- version: '0.10'
189
- type: :development
190
- prerelease: false
191
- version_requirements: !ruby/object:Gem::Requirement
192
- requirements:
193
- - - "~>"
194
- - !ruby/object:Gem::Version
195
- version: '0.10'
196
- - !ruby/object:Gem::Dependency
197
- name: yaml-lint
198
- requirement: !ruby/object:Gem::Requirement
199
- requirements:
200
- - - "~>"
201
- - !ruby/object:Gem::Version
202
- version: '0.0'
203
- type: :development
204
- prerelease: false
205
- version_requirements: !ruby/object:Gem::Requirement
206
- requirements:
207
- - - "~>"
208
- - !ruby/object:Gem::Version
209
- version: '0.0'
210
56
  email:
211
57
  - broconne+github@gmail.com
212
58
  - cody@cutrer.us
@@ -383,6 +229,7 @@ files:
383
229
  - lib/openhab/dsl/gems.rb
384
230
  - lib/openhab/dsl/items/builder.rb
385
231
  - lib/openhab/dsl/items/ensure.rb
232
+ - lib/openhab/dsl/items/tags.rb
386
233
  - lib/openhab/dsl/items/timed_command.rb
387
234
  - lib/openhab/dsl/rules.rb
388
235
  - lib/openhab/dsl/rules/automation_rule.rb