openhab-scripting 4.2.0 → 4.3.0
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:
|
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
|