openhab-scripting 4.0.1 → 4.1.3

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: 4028b9fda2ff3ffa7005f730d7b876e136cf4c3dacc66f0f8950077c4a8f5ab9
4
- data.tar.gz: dc819dea7d3f573299934da843ddadc597f98f59165426e6c88e321a1fd93200
3
+ metadata.gz: a66939406a04523ae992c37d0ec6c4d83ca5334e156d4211e883dd51085a282f
4
+ data.tar.gz: f93569799fdd9c01e3d678619655484f799d7a9c3dcab43222cc49e8051cc8cd
5
5
  SHA512:
6
- metadata.gz: 2839736ff1c0d15c6622e679e7ada29d6f34afe5bae7d9fa375ebe34e809b14eb0f54b447d95ff7548b3f97786f0c7f6f979cd8ce796fa84bdbb1b60312a7e73
7
- data.tar.gz: 45b0ca416f63b8971fdd4f7ee7d86c449ac44b0d0acdf6a1ce6955d604c04bf12788900a180fde7ec49d9fafe8aa5a5b6a8d4271cc5a72ab4440ddbe9e7a2b8a
6
+ metadata.gz: 13c9f58823377f3297613a43803fbf6474e7b5d8a4225e42688485cdb15b147ca0116b10115dcb643a1fbdb6fadbb34fe34b038cd396e2fdc23ebfc6ea840354
7
+ data.tar.gz: b7969f401abb258512607c5b635e6e972c58217200c787a8a18ebeaad25cd866388db888185b3b1939dbdd617e0647011919e9557ecd6698aeafcdae6329cbfa
@@ -1,9 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'delegate'
4
- require 'forwardable'
3
+ require 'java'
4
+ require 'singleton'
5
+
5
6
  require 'openhab/core/entity_lookup'
6
7
  require 'openhab/dsl/items/group_item'
8
+ require 'openhab/dsl/lazy_array'
7
9
 
8
10
  module OpenHAB
9
11
  module DSL
@@ -14,16 +16,27 @@ module OpenHAB
14
16
  #
15
17
  # Provide access to groups as a set
16
18
  #
17
- class Groups < SimpleDelegator
19
+ class Groups
20
+ include LazyArray
21
+ include Singleton
22
+
18
23
  #
19
24
  # Get a OpenHAB Group by name
20
25
  # @param [String] name of the group to retrieve
21
26
  #
22
27
  # @return [Set] of OpenHAB Groups
23
28
  #
24
- def[](name)
25
- group = OpenHAB::Core::EntityLookup.lookup_item(name)
26
- group.is_a?(OpenHAB::DSL::Items::GroupItem) ? group : nil
29
+ def [](name)
30
+ group = Core::EntityLookup.lookup_item(name)
31
+ group.is_a?(Items::GroupItem) ? group : nil
32
+ end
33
+ alias include? []
34
+ alias key? include?
35
+
36
+ # explicit conversion to array
37
+ def to_a
38
+ items = $ir.items.grep(org.openhab.core.items.GroupItem) # rubocop:disable Style/GlobalVars
39
+ Core::EntityLookup.decorate_items(items)
27
40
  end
28
41
  end
29
42
 
@@ -33,9 +46,7 @@ module OpenHAB
33
46
  # @return [Set] of OpenHAB Groups
34
47
  #
35
48
  def groups
36
- # rubocop: disable Style/GlobalVars
37
- Groups.new(OpenHAB::Core::EntityLookup.decorate_items($ir.items.grep(Java::OrgOpenhabCoreItems::GroupItem)))
38
- # rubocop: enable Style/GlobalVars
49
+ Groups.instance
39
50
  end
40
51
  end
41
52
  end
@@ -3,9 +3,11 @@
3
3
  require 'delegate'
4
4
  require 'forwardable'
5
5
  require 'java'
6
+
7
+ require 'openhab/core/entity_lookup'
6
8
  require 'openhab/dsl/items/item_command'
7
9
  require 'openhab/dsl/items/item_delegate'
8
- require 'openhab/core/entity_lookup'
10
+ require 'openhab/dsl/lazy_array'
9
11
 
10
12
  module OpenHAB
11
13
  module DSL
@@ -14,7 +16,7 @@ module OpenHAB
14
16
  # Class for indicating to triggers that a group trigger should be used
15
17
  #
16
18
  class GroupMembers
17
- include Enumerable
19
+ include LazyArray
18
20
 
19
21
  attr_reader :group
20
22
 
@@ -27,22 +29,10 @@ module OpenHAB
27
29
  @group = group_item
28
30
  end
29
31
 
30
- # Calls the given block once for each group member, passing that
31
- # item as a parameter. Returns self.
32
- #
33
- # If no block is given, an Enumerator is returned.
34
- def each(&block)
35
- to_a.each(&block)
36
- self
37
- end
38
-
39
32
  # explicit conversion to array
40
- # more efficient than letting Enumerable do it
41
33
  def to_a
42
34
  OpenHAB::Core::EntityLookup.decorate_items(group.members.to_a)
43
35
  end
44
- # implicitly convertible to array
45
- alias to_ary to_a
46
36
  end
47
37
 
48
38
  #
@@ -1,9 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'java'
4
- require 'openhab/core/entity_lookup'
5
4
  require 'singleton'
6
5
 
6
+ require 'openhab/core/entity_lookup'
7
+ require 'openhab/dsl/lazy_array'
8
+
7
9
  module OpenHAB
8
10
  module DSL
9
11
  #
@@ -14,7 +16,7 @@ module OpenHAB
14
16
  # Delegates to underlying set of all OpenHAB Items, provides convenience methods
15
17
  #
16
18
  class Items
17
- include Enumerable
19
+ include LazyArray
18
20
  include Singleton
19
21
 
20
22
  # Fetches the named item from the the ItemRegistry
@@ -32,27 +34,13 @@ module OpenHAB
32
34
  def include?(name)
33
35
  !$ir.getItems(name).empty? # rubocop: disable Style/GlobalVars
34
36
  end
35
- alias key? include?
36
-
37
- # Calls the given block once for each Item, passing that Item as a
38
- # parameter. Returns self.
39
- #
40
- # If no block is given, an Enumerator is returned.
41
- def each(&block)
42
- # ideally we would do this lazily, but until ruby 2.7
43
- # there's no #eager method to convert back to a non-lazy
44
- # enumerator
45
- to_a.each(&block)
46
- end
37
+ alias key? []
47
38
 
48
39
  # explicit conversion to array
49
- # more efficient than letting Enumerable do it
50
40
  def to_a
51
- items = $ir.items.grep_v(Java::OrgOpenhabCoreItems::GroupItem) # rubocop:disable Style/GlobalVars
41
+ items = $ir.items.grep_v(org.openhab.core.items.GroupItem) # rubocop:disable Style/GlobalVars
52
42
  OpenHAB::Core::EntityLookup.decorate_items(items)
53
43
  end
54
- # implicitly convertible to array
55
- alias to_ary to_a
56
44
  end
57
45
 
58
46
  # Fetches all non-group items from the item registry
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OpenHAB
4
+ module DSL
5
+ # common base class for array-like collections that have lookup
6
+ # methods to avoid instantiating the elements if you only use
7
+ # the lookup method
8
+ #
9
+ # your class should implement to_a
10
+ #
11
+ module LazyArray
12
+ include Enumerable
13
+
14
+ # Calls the given block once for each Thing, passing that Thing as a
15
+ # parameter. Returns self.
16
+ #
17
+ # If no block is given, an Enumerator is returned.
18
+ def each(&block)
19
+ to_a.each(&block)
20
+ self
21
+ end
22
+
23
+ # implicitly convertible to array
24
+ def to_ary
25
+ to_a
26
+ end
27
+
28
+ # delegate any other methods to the actual array
29
+ # exclude mutating methods though
30
+ def method_missing(method, *args, &block)
31
+ return to_a.send(method, *args, &block) if method[-1] != '!' && Array.instance_methods.include?(method)
32
+
33
+ super
34
+ end
35
+
36
+ # advertise that methods exist that would be delegated to Array
37
+ def respond_to_missing?(method, include_private = false)
38
+ return true if method[-1] != '!' && Array.instance_methods.include?(method.to_sym)
39
+
40
+ super
41
+ end
42
+ end
43
+ end
44
+ end
@@ -16,6 +16,11 @@ module OpenHAB
16
16
  # MonkeyPatching Decimal Type
17
17
  #
18
18
  class DecimalType
19
+ extend Forwardable
20
+
21
+ delegate %i[to_d zero?] => :to_big_decimal
22
+ delegate %i[positive? negative?] => :to_d
23
+
19
24
  #
20
25
  # @param [Object] other object to compare to
21
26
  #
@@ -1,10 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'delegate'
3
4
  require 'java'
5
+ require 'singleton'
6
+
4
7
  require 'openhab/log/logger'
5
8
  require 'openhab/dsl/actions'
6
- require 'delegate'
7
- require 'singleton'
9
+ require 'openhab/dsl/lazy_array'
8
10
 
9
11
  module OpenHAB
10
12
  module DSL
@@ -78,44 +80,26 @@ module OpenHAB
78
80
  # Wraps all Things in a delegator to underlying set and provides lookup method
79
81
  #
80
82
  class Things
81
- java_import org.openhab.core.thing.ThingUID
82
-
83
- include Enumerable
83
+ include LazyArray
84
84
  include Singleton
85
85
 
86
86
  # Gets a specific thing by name in the format binding_id:type_id:thing_id
87
87
  # @return Thing specified by name or nil if name does not exist in thing registry
88
88
  def [](uid)
89
- thing_uid = ThingUID.new(*uid.split(':'))
89
+ thing_uid = org.openhab.core.thing.ThingUID.new(*uid.split(':'))
90
90
  thing = $things.get(thing_uid) # rubocop: disable Style/GlobalVars
91
91
  return unless thing
92
92
 
93
93
  logger.trace("Retrieved Thing(#{thing}) from registry for uid: #{uid}")
94
94
  Thing.new(thing)
95
95
  end
96
-
97
96
  alias include? []
98
97
  alias key? []
99
98
 
100
- # Calls the given block once for each Thing, passing that Thing as a
101
- # parameter. Returns self.
102
- #
103
- # If no block is given, an Enumerator is returned.
104
- def each(&block)
105
- # ideally we would do this lazily, but until ruby 2.7
106
- # there's no #eager method to convert back to a non-lazy
107
- # enumerator
108
- to_a.each(&block)
109
- self
110
- end
111
-
112
99
  # explicit conversion to array
113
- # more efficient than letting Enumerable do it
114
100
  def to_a
115
101
  $things.getAll.map { |thing| Thing.new(thing) } # rubocop: disable Style/GlobalVars
116
102
  end
117
- # implicitly convertible to array
118
- alias to_ary to_a
119
103
  end
120
104
 
121
105
  #
@@ -5,5 +5,5 @@
5
5
  #
6
6
  module OpenHAB
7
7
  # @return [String] Version of OpenHAB helper libraries
8
- VERSION = '4.0.1'
8
+ VERSION = '4.1.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: 4.0.1
4
+ version: 4.1.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-10-05 00:00:00.000000000 Z
11
+ date: 2021-10-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -64,6 +64,7 @@ files:
64
64
  - lib/openhab/dsl/items/player_item.rb
65
65
  - lib/openhab/dsl/items/rollershutter_item.rb
66
66
  - lib/openhab/dsl/items/string_item.rb
67
+ - lib/openhab/dsl/lazy_array.rb
67
68
  - lib/openhab/dsl/monkey_patch/actions/actions.rb
68
69
  - lib/openhab/dsl/monkey_patch/actions/script_thing_actions.rb
69
70
  - lib/openhab/dsl/monkey_patch/events/events.rb