openhab-scripting 4.2.0 → 4.3.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 34dcff6b869bdb1bbcf1e61d84ffe7ff07d039204ee868d16f0f249c3074e898
|
4
|
+
data.tar.gz: 39645a3f3486d9bba7db56a43d4c60883c346eea007242603a2dd2f7c8aa3b6e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 303f0751aac26ab7f28a4350ff03151a3a03bb1559f51ae0130c830ea5e20d6bb4165929a173ed4e749cf62ee0e4ab66f1f79845e8e851d44a288407e11be5a5
|
7
|
+
data.tar.gz: dfee68ab34f41a303886bc8028ae7a30ff4baaee2fd87cc75602bfa7d82f57c2c3a7bf6190f6efecdb2a364c21a4514fe59984e9da8574cf19c5f3fd782abc7e
|
data/lib/openhab/dsl/dsl.rb
CHANGED
@@ -10,6 +10,7 @@ require 'openhab/dsl/monkey_patch/ruby/ruby'
|
|
10
10
|
require 'openhab/dsl/monkey_patch/events/events'
|
11
11
|
require 'openhab/dsl/monkey_patch/actions/actions'
|
12
12
|
require 'openhab/dsl/rules/rule'
|
13
|
+
require 'openhab/dsl/rules/terse'
|
13
14
|
require 'openhab/dsl/actions'
|
14
15
|
require 'openhab/dsl/timers'
|
15
16
|
require 'openhab/dsl/group'
|
@@ -34,6 +35,7 @@ module OpenHAB
|
|
34
35
|
base.send :include, OpenHAB::DSL::Items
|
35
36
|
base.send :include, OpenHAB::DSL::Persistence
|
36
37
|
base.send :include, OpenHAB::DSL::Rules
|
38
|
+
base.send :include, OpenHAB::DSL::Rules::Terse
|
37
39
|
base.send :include, OpenHAB::DSL::States
|
38
40
|
base.send :include, OpenHAB::DSL::Things
|
39
41
|
base.send :include, OpenHAB::DSL::Timers
|
@@ -3,6 +3,8 @@
|
|
3
3
|
require 'openhab/dsl/items/metadata'
|
4
4
|
require 'openhab/dsl/items/persistence'
|
5
5
|
|
6
|
+
require_relative 'item_equality'
|
7
|
+
|
6
8
|
module OpenHAB
|
7
9
|
module DSL
|
8
10
|
module Items
|
@@ -12,6 +14,8 @@ module OpenHAB
|
|
12
14
|
# Ruby
|
13
15
|
class GenericItem
|
14
16
|
include Log
|
17
|
+
include ItemEquality
|
18
|
+
|
15
19
|
prepend Metadata
|
16
20
|
prepend Persistence
|
17
21
|
|
@@ -135,33 +139,6 @@ module OpenHAB
|
|
135
139
|
other.instance_of?(self.class) && hash == other.hash
|
136
140
|
end
|
137
141
|
|
138
|
-
#
|
139
|
-
# Check equality, with type conversions
|
140
|
-
#
|
141
|
-
# @param [GenericItem, Types::Type, Object] other object to
|
142
|
-
# compare to
|
143
|
-
#
|
144
|
-
# If this item is +NULL+ or +UNDEF+, and +other+ is nil, they are
|
145
|
-
# considered equal
|
146
|
-
#
|
147
|
-
# If this item is +NULL+ or +UNDEF+, and other is a {GenericItem}, they
|
148
|
-
# are only considered equal if the other item is in the exact same
|
149
|
-
# state (i.e. +NULL+ != +UNDEF+)
|
150
|
-
#
|
151
|
-
# Otherwise, the state of this item is compared with +other+
|
152
|
-
#
|
153
|
-
# @return [Boolean]
|
154
|
-
#
|
155
|
-
def ==(other)
|
156
|
-
logger.trace("(#{self.class}) #{self} == #{other} (#{other.class})")
|
157
|
-
return true if equal?(other) || eql?(other)
|
158
|
-
return true if !state? && other.nil?
|
159
|
-
|
160
|
-
return raw_state == other.raw_state if other.is_a?(GenericItem)
|
161
|
-
|
162
|
-
state == other
|
163
|
-
end
|
164
|
-
|
165
142
|
# @!method null?
|
166
143
|
# Check if the item state == +NULL+
|
167
144
|
# @return [Boolean]
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OpenHAB
|
4
|
+
module DSL
|
5
|
+
module Items
|
6
|
+
# Shared method for checking item equality by delegating to state
|
7
|
+
module ItemEquality
|
8
|
+
# Check equality, with type conversions
|
9
|
+
#
|
10
|
+
# @param [GenericItem, Types::Type, Object] other object to
|
11
|
+
# compare to
|
12
|
+
#
|
13
|
+
# If this item is +NULL+ or +UNDEF+, and +other+ is nil, they are
|
14
|
+
# considered equal
|
15
|
+
#
|
16
|
+
# If this item is +NULL+ or +UNDEF+, and other is a {GenericItem}, they
|
17
|
+
# are only considered equal if the other item is in the exact same
|
18
|
+
# state (i.e. +NULL+ != +UNDEF+)
|
19
|
+
#
|
20
|
+
# Otherwise, the state of this item is compared with +other+
|
21
|
+
#
|
22
|
+
# @return [Boolean]
|
23
|
+
#
|
24
|
+
def ==(other)
|
25
|
+
logger.trace("(#{self.class}) #{self} == #{other} (#{other.class})")
|
26
|
+
return true if equal?(other) || eql?(other)
|
27
|
+
return true if !state? && other.nil?
|
28
|
+
|
29
|
+
return raw_state == other.raw_state if other.is_a?(GenericItem)
|
30
|
+
|
31
|
+
state == other
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -2,7 +2,8 @@
|
|
2
2
|
|
3
3
|
require 'forwardable'
|
4
4
|
|
5
|
-
|
5
|
+
require_relative 'comparable_item'
|
6
|
+
require_relative 'item_equality'
|
6
7
|
|
7
8
|
module OpenHAB
|
8
9
|
module DSL
|
@@ -15,6 +16,7 @@ module OpenHAB
|
|
15
16
|
|
16
17
|
# apply meta-programming methods to including class
|
17
18
|
def self.included(klass)
|
19
|
+
klass.prepend ItemEquality # make sure this is first
|
18
20
|
klass.extend Forwardable
|
19
21
|
klass.delegate %i[+ - * / % | positive? negative? to_d to_f to_i to_int zero?] => :state
|
20
22
|
# remove the JRuby default == so that we can inherit the Ruby method
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module OpenHAB
|
4
|
+
module DSL
|
5
|
+
module Rules
|
6
|
+
# Module containing terse rule stubs
|
7
|
+
module Terse
|
8
|
+
%i[changed channel cron every updated received_command].each do |trigger|
|
9
|
+
class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
|
10
|
+
def #{trigger}(*args, name: nil, **kwargs, &block) # def changed(*args, name: nil, **kwargs, &block)
|
11
|
+
# if no name is given, just default to the name of the rules file # # if no name is given, just default to the name of the rules file
|
12
|
+
name ||= File.basename(caller_locations.last.path) # name ||= File.basename(caller_locations.last.path)
|
13
|
+
rule name do # rule name do
|
14
|
+
#{trigger}(*args, **kwargs) # changed(*args, **kwargs)
|
15
|
+
run(&block) # run(&block)
|
16
|
+
end # end
|
17
|
+
end # end
|
18
|
+
module_function #{trigger.inspect} # module_function :changed
|
19
|
+
RUBY
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/openhab/version.rb
CHANGED
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.
|
4
|
+
version: 4.3.0
|
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-
|
11
|
+
date: 2021-10-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -61,6 +61,7 @@ files:
|
|
61
61
|
- lib/openhab/dsl/items/generic_item.rb
|
62
62
|
- lib/openhab/dsl/items/group_item.rb
|
63
63
|
- lib/openhab/dsl/items/image_item.rb
|
64
|
+
- lib/openhab/dsl/items/item_equality.rb
|
64
65
|
- lib/openhab/dsl/items/item_registry.rb
|
65
66
|
- lib/openhab/dsl/items/items.rb
|
66
67
|
- lib/openhab/dsl/items/metadata.rb
|
@@ -89,6 +90,7 @@ files:
|
|
89
90
|
- lib/openhab/dsl/rules/property.rb
|
90
91
|
- lib/openhab/dsl/rules/rule.rb
|
91
92
|
- lib/openhab/dsl/rules/rule_config.rb
|
93
|
+
- lib/openhab/dsl/rules/terse.rb
|
92
94
|
- lib/openhab/dsl/rules/triggers/changed.rb
|
93
95
|
- lib/openhab/dsl/rules/triggers/channel.rb
|
94
96
|
- lib/openhab/dsl/rules/triggers/command.rb
|