openhab-scripting 5.38.2 → 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: 80e5c451235909f43f9b0b0a82f80a501f0a978d65f52d3bc8dcf8ae5e74fd5e
4
- data.tar.gz: 57633cd38589cc8e9bd8d11c0bccf66761cdf0aaaffcdde4b6c77ee9388df527
3
+ metadata.gz: de1cd952cd575534190d36d824d13a2b39e0eff5411471d2846a343a48830b1e
4
+ data.tar.gz: 5501e9e018cdf251f42253d887f261d49977e626b1d8cf9f88820a96b89840e8
5
5
  SHA512:
6
- metadata.gz: 67035be352872b9eb97049875648d7e3c5c190e8ea10ee6eb580f039266746f927d24b51844c022c19e75dadd20baaf23450fb35d34d6df43b5046f7cf4fedc9
7
- data.tar.gz: 74be0ee645c5ba2b480250a5dd3db36773596bb8aec3e0e27b5e96b48da765e4cf5a544d1ae4613ac761c6662e17bde7b1c5bce34038c212080f682dda64508d
6
+ metadata.gz: e4ae9164c16df30f5c2f66e02663628b6be1310d8940bc56a60c60dd1e26af9db38a1f17f42ef63cf1bc415924cd0fc5e4945a9d03320c79f77bd3136b198d29
7
+ data.tar.gz: 941cd83990e52ec3fe1f6e9a4728f7d0ea2e0018991d2692ac4eb0398071f1869961a4e49e389385bb0ceb320c7401778c3e0897010ed37aaff1877e322a7257
@@ -2,10 +2,10 @@
2
2
 
3
3
  require "openhab/console/stdio"
4
4
 
5
- gem "irb", "~> 1.15"
6
-
7
5
  require "irb"
8
6
 
7
+ raise "IRB Version 1.14 or later is required." unless Gem::Version.new(IRB::VERSION) >= Gem::Version.new("1.14")
8
+
9
9
  module OpenHAB
10
10
  # @!visibility private
11
11
  module Console
@@ -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?
@@ -8,10 +8,30 @@ module OpenHAB
8
8
  # Add attachments event data.
9
9
  class AbstractEvent
10
10
  # @return [Object]
11
- attr_accessor :attachment
11
+ attr_reader :attachment
12
12
 
13
13
  # @return [Hash]
14
- attr_accessor :inputs
14
+ attr_reader :inputs
15
+
16
+ # @!visibility private
17
+ def attachment=(value)
18
+ # Disable "instance vars on non-persistent Java type"
19
+ original_verbose = $VERBOSE
20
+ $VERBOSE = nil
21
+ @attachment = value
22
+ ensure
23
+ $VERBOSE = original_verbose
24
+ end
25
+
26
+ # @!visibility private
27
+ def inputs=(value)
28
+ # Disable "instance vars on non-persistent Java type"
29
+ original_verbose = $VERBOSE
30
+ $VERBOSE = nil
31
+ @inputs = value
32
+ ensure
33
+ $VERBOSE = original_verbose
34
+ end
15
35
 
16
36
  # @!attribute [r] source
17
37
  # @return [String] The component that sent the event.
@@ -24,7 +44,12 @@ module OpenHAB
24
44
  #
25
45
  def payload
26
46
  require "json"
47
+ # Disable "instance vars on non-persistent Java type"
48
+ original_verbose = $VERBOSE
49
+ $VERBOSE = nil
27
50
  @payload ||= JSON.parse(get_payload, symbolize_names: true) unless get_payload.empty?
51
+ ensure
52
+ $VERBOSE = original_verbose
28
53
  end
29
54
 
30
55
  # @return [String]
@@ -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
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "base64"
4
3
  require "pathname"
5
4
  require "net/http"
6
5
  require "marcel"
@@ -25,10 +25,10 @@ module OpenHAB
25
25
  OpenHAB::OSGi.service("org.openhab.core.io.rest.sse.internal.SseItemStatesEventBuilder")&.tap do |builder|
26
26
  m = builder.class.java_class.get_declared_method("getDisplayState", Item, java.util.Locale)
27
27
  m.accessible = true
28
- builder.instance_variable_set(:@getDisplayState, m)
29
28
  # Disable "singleton on non-persistent Java type"
30
29
  original_verbose = $VERBOSE
31
30
  $VERBOSE = nil
31
+ builder.instance_variable_set(:@getDisplayState, m)
32
32
  def builder.get_display_state(item)
33
33
  @getDisplayState.invoke(self, item, nil)
34
34
  end
@@ -390,7 +390,7 @@ module OpenHAB
390
390
  # # Item1's metadata after: {"namespace2"=>["value", {"config1"=>"foo", "config2"=>"bar"}], "namespace"=>["value", {"config1"=>"foo", "config2"=>"bar"}]}
391
391
  #
392
392
  def metadata
393
- @metadata ||= Metadata::NamespaceHash.new(name)
393
+ Metadata::NamespaceHash.new(name)
394
394
  end
395
395
  # rubocop:enable Layout/LineLength
396
396
 
@@ -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
@@ -8,16 +8,23 @@ module OpenHAB
8
8
  # and channels.
9
9
  #
10
10
  module ProfileCallback
11
+ class << self
12
+ # @!visibility private
13
+ def dummy_channel_item(accepted_item_type)
14
+ @dummy_channel_items[accepted_item_type]
15
+ end
16
+ end
17
+ @dummy_channel_items = Hash.new do |hash, key|
18
+ hash[key] = DSL::Items::ItemBuilder.item_factory.create_item(key, "")
19
+ end
20
+
11
21
  #
12
22
  # Forward the given command to the respective thing handler.
13
23
  #
14
24
  # @param [Command] command
15
25
  #
16
26
  def handle_command(command)
17
- unless instance_variable_defined?(:@dummy_channel_item)
18
- @dummy_channel_item = DSL::Items::ItemBuilder.item_factory.create_item(link.channel.accepted_item_type, "")
19
- end
20
- command = @dummy_channel_item.format_command(command) if @dummy_channel_item
27
+ command = ProfileCallback.dummy_channel_item(link.channel.accepted_item_type)&.format_command(command)
21
28
  super
22
29
  end
23
30
 
@@ -175,7 +175,7 @@ module OpenHAB
175
175
 
176
176
  # @see https://docs.ruby-lang.org/en/master/Hash.html#method-i-to_proc Hash#to_proc
177
177
  def to_proc
178
- @to_proc ||= ->(k) { self[k] }
178
+ ->(k) { self[k] }
179
179
  end
180
180
 
181
181
  # @see https://docs.ruby-lang.org/en/master/Hash.html#method-i-values_at Hash#values_at
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
@@ -87,9 +87,9 @@ module Java::JavaUtil::List # rubocop:disable Style/ClassAndModuleChildren
87
87
  def delete_if
88
88
  raise NotImplementedError unless block_given?
89
89
 
90
- it = list_iterator
91
- while it.has_next? # rubocop:disable Style/WhileUntilModifier
92
- it.remove if yield(it.next)
90
+ itr = list_iterator
91
+ while itr.has_next? # rubocop:disable Style/WhileUntilModifier
92
+ itr.remove if yield(itr.next)
93
93
  end
94
94
  self
95
95
  end
@@ -160,17 +160,17 @@ module Java::JavaUtil::List # rubocop:disable Style/ClassAndModuleChildren
160
160
  start = range.begin
161
161
  start = 0 if start.negative?
162
162
  start = length if start > length
163
- it = list_iterator(start)
163
+ itr = list_iterator(start)
164
164
 
165
- while range.cover?(it.next_index)
166
- break if range.end.nil? && !it.has_next?
165
+ while range.cover?(itr.next_index)
166
+ break if range.end.nil? && !itr.has_next?
167
167
 
168
- obj = yield(it.next_index) if block_given?
169
- if it.has_next?
170
- it.next
171
- it.set(obj)
168
+ obj = yield(itr.next_index) if block_given?
169
+ if itr.has_next?
170
+ itr.next
171
+ itr.set(obj)
172
172
  else
173
- it.add(obj)
173
+ itr.add(obj)
174
174
  end
175
175
  end
176
176
 
@@ -183,22 +183,22 @@ module Java::JavaUtil::List # rubocop:disable Style/ClassAndModuleChildren
183
183
  "wrong number of arguments calling `flatten` (given #{args.length}, expect 0..1)"
184
184
  end
185
185
 
186
- it = list_iterator
186
+ itr = list_iterator
187
187
 
188
188
  args = [args.first - 1] unless args.empty?
189
189
  done = args.first == 0 # rubocop:disable Style/NumericPredicate
190
190
 
191
191
  changed = false
192
- while it.has_next?
193
- element = it.next
192
+ while itr.has_next?
193
+ element = itr.next
194
194
  next unless element.respond_to?(:to_ary)
195
195
 
196
196
  changed = true
197
- it.remove
197
+ itr.remove
198
198
  arr = element.to_ary
199
199
  arr = arr.flatten(*args) unless done
200
200
  arr.each do |e|
201
- it.add(e)
201
+ itr.add(e)
202
202
  end
203
203
  end
204
204
  changed ? self : nil
@@ -223,9 +223,9 @@ module Java::JavaUtil::List # rubocop:disable Style/ClassAndModuleChildren
223
223
  def keep_if?
224
224
  raise NotImplementedError unless block_given?
225
225
 
226
- it = list_iterator
227
- while it.has_next? # rubocop:disable Style/WhileUntilModifier
228
- it.remove unless yield(it.next)
226
+ itr = list_iterator
227
+ while itr.has_next? # rubocop:disable Style/WhileUntilModifier
228
+ itr.remove unless yield(itr.next)
229
229
  end
230
230
  self
231
231
  end
@@ -257,10 +257,10 @@ module Java::JavaUtil::List # rubocop:disable Style/ClassAndModuleChildren
257
257
  count = args.first
258
258
  start = [length - count, 0].max
259
259
  result = self[start..-1].to_a # rubocop:disable Style/SlicingWithRange
260
- it = list_iterator(start)
261
- while it.has_next?
262
- it.next
263
- it.remove
260
+ itr = list_iterator(start)
261
+ while itr.has_next?
262
+ itr.next
263
+ itr.remove
264
264
  end
265
265
  result
266
266
  end
@@ -278,12 +278,12 @@ module Java::JavaUtil::List # rubocop:disable Style/ClassAndModuleChildren
278
278
  def reject!
279
279
  raise NotImplementedError unless block_given?
280
280
 
281
- it = list_iterator
281
+ itr = list_iterator
282
282
  changed = false
283
- while it.has_next
284
- if yield(it.next)
283
+ while itr.has_next
284
+ if yield(itr.next)
285
285
  changed = true
286
- it.remove
286
+ itr.remove
287
287
  end
288
288
  end
289
289
  self if changed
@@ -319,12 +319,12 @@ module Java::JavaUtil::List # rubocop:disable Style/ClassAndModuleChildren
319
319
  def select!
320
320
  raise NotImplementedError unless block_given?
321
321
 
322
- it = list_iterator
322
+ itr = list_iterator
323
323
  changed = false
324
- while it.has_next?
325
- unless yield(it.next)
324
+ while itr.has_next?
325
+ unless yield(itr.next)
326
326
  changed = true
327
- it.remove
327
+ itr.remove
328
328
  end
329
329
  end
330
330
  self if changed
@@ -344,12 +344,12 @@ module Java::JavaUtil::List # rubocop:disable Style/ClassAndModuleChildren
344
344
 
345
345
  count = args.first
346
346
  result = self[0...count].to_a
347
- it = list_iterator
347
+ itr = list_iterator
348
348
  count.times do
349
- break unless it.has_next?
349
+ break unless itr.has_next?
350
350
 
351
- it.next
352
- it.remove
351
+ itr.next
352
+ itr.remove
353
353
  end
354
354
  result
355
355
  end
@@ -377,10 +377,10 @@ module Java::JavaUtil::List # rubocop:disable Style/ClassAndModuleChildren
377
377
 
378
378
  result = slice(*args).to_a
379
379
 
380
- it = list_iterator(start)
380
+ itr = list_iterator(start)
381
381
  result.length.times do
382
- it.next
383
- it.remove
382
+ itr.next
383
+ itr.remove
384
384
  end
385
385
  result
386
386
  end
@@ -395,14 +395,14 @@ module Java::JavaUtil::List # rubocop:disable Style/ClassAndModuleChildren
395
395
  def uniq!
396
396
  seen = Set.new
397
397
 
398
- it = list_iterator
398
+ itr = list_iterator
399
399
  changed = false
400
- while it.has_next?
401
- n = it.next
400
+ while itr.has_next?
401
+ n = itr.next
402
402
  n = yield(n) if block_given?
403
403
  if seen.include?(n)
404
404
  changed = true
405
- it.remove
405
+ itr.remove
406
406
  end
407
407
  seen << n
408
408
  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.2"
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.2
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: '8.0'
63
- type: :development
64
- prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - "~>"
68
- - !ruby/object:Gem::Version
69
- version: '8.0'
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