openhab-scripting 4.46.2 → 5.0.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 +4 -4
- data/lib/openhab/core/actions/audio.rb +47 -0
- data/lib/openhab/core/actions/ephemeris.rb +39 -0
- data/lib/openhab/core/actions/exec.rb +51 -0
- data/lib/openhab/core/actions/http.rb +80 -0
- data/lib/openhab/core/actions/ping.rb +30 -0
- data/lib/openhab/core/actions/transformation.rb +32 -0
- data/lib/openhab/core/actions/voice.rb +36 -0
- data/lib/openhab/core/actions.rb +82 -0
- data/lib/openhab/core/dependency_tracking.rb +34 -0
- data/lib/openhab/core/dto/item_channel_link.rb +33 -0
- data/lib/openhab/core/dto/thing.rb +27 -0
- data/lib/openhab/core/dto.rb +11 -0
- data/lib/openhab/core/entity_lookup.rb +152 -70
- data/lib/openhab/core/events/abstract_event.rb +18 -0
- data/lib/openhab/core/events/abstract_item_registry_event.rb +36 -0
- data/lib/openhab/core/events/abstract_thing_registry_event.rb +40 -0
- data/lib/openhab/core/events/item_command_event.rb +78 -0
- data/lib/openhab/core/events/item_event.rb +22 -0
- data/lib/openhab/core/events/item_state_changed_event.rb +75 -0
- data/lib/openhab/core/events/item_state_event.rb +79 -0
- data/lib/openhab/core/events/thing_status_info_event.rb +55 -0
- data/lib/openhab/core/events.rb +10 -0
- data/lib/openhab/core/items/accepted_data_types.rb +29 -0
- data/lib/openhab/core/items/color_item.rb +52 -0
- data/lib/openhab/core/items/contact_item.rb +52 -0
- data/lib/openhab/core/items/date_time_item.rb +59 -0
- data/lib/openhab/core/items/dimmer_item.rb +148 -0
- data/lib/openhab/core/items/generic_item.rb +292 -0
- data/lib/openhab/core/items/group_item.rb +176 -0
- data/lib/openhab/{dsl → core}/items/image_item.rb +35 -29
- data/lib/openhab/core/items/item.rb +273 -0
- data/lib/openhab/core/items/location_item.rb +34 -0
- data/lib/openhab/core/items/metadata/hash.rb +433 -0
- data/lib/openhab/core/items/metadata/namespace_hash.rb +475 -0
- data/lib/openhab/core/items/metadata/provider.rb +48 -0
- data/lib/openhab/core/items/metadata.rb +11 -0
- data/lib/openhab/core/items/number_item.rb +62 -0
- data/lib/openhab/core/items/numeric_item.rb +22 -0
- data/lib/openhab/core/items/persistence.rb +416 -0
- data/lib/openhab/core/items/player_item.rb +66 -0
- data/lib/openhab/core/items/provider.rb +44 -0
- data/lib/openhab/core/items/proxy.rb +136 -0
- data/lib/openhab/core/items/registry.rb +86 -0
- data/lib/openhab/core/items/rollershutter_item.rb +68 -0
- data/lib/openhab/core/items/semantics/enumerable.rb +177 -0
- data/lib/openhab/core/items/semantics.rb +473 -0
- data/lib/openhab/core/items/state_storage.rb +53 -0
- data/lib/openhab/core/items/string_item.rb +28 -0
- data/lib/openhab/core/items/switch_item.rb +78 -0
- data/lib/openhab/core/items.rb +108 -0
- data/lib/openhab/{dsl → core}/lazy_array.rb +9 -3
- data/lib/openhab/core/profile_factory.rb +132 -0
- data/lib/openhab/core/provider.rb +230 -0
- data/lib/openhab/core/proxy.rb +130 -0
- data/lib/openhab/core/registry.rb +40 -0
- data/lib/openhab/core/rules/module.rb +26 -0
- data/lib/openhab/core/rules/provider.rb +25 -0
- data/lib/openhab/core/rules/registry.rb +76 -0
- data/lib/openhab/core/rules/rule.rb +150 -0
- data/lib/openhab/core/rules.rb +25 -0
- data/lib/openhab/core/script_handling.rb +78 -20
- data/lib/openhab/core/things/channel.rb +48 -0
- data/lib/openhab/core/things/channel_uid.rb +51 -0
- data/lib/openhab/core/things/item_channel_link.rb +33 -0
- data/lib/openhab/core/things/links/provider.rb +78 -0
- data/lib/openhab/core/things/profile_callback.rb +52 -0
- data/lib/openhab/core/things/provider.rb +29 -0
- data/lib/openhab/core/things/proxy.rb +87 -0
- data/lib/openhab/core/things/registry.rb +73 -0
- data/lib/openhab/core/things/thing.rb +194 -0
- data/lib/openhab/core/things.rb +22 -0
- data/lib/openhab/core/timer.rb +148 -0
- data/lib/openhab/{dsl → core}/types/comparable_type.rb +5 -3
- data/lib/openhab/{dsl → core}/types/date_time_type.rb +55 -127
- data/lib/openhab/{dsl → core}/types/decimal_type.rb +50 -48
- data/lib/openhab/{dsl → core}/types/hsb_type.rb +35 -83
- data/lib/openhab/core/types/increase_decrease_type.rb +34 -0
- data/lib/openhab/core/types/next_previous_type.rb +34 -0
- data/lib/openhab/{dsl → core}/types/numeric_type.rb +20 -7
- data/lib/openhab/core/types/on_off_type.rb +46 -0
- data/lib/openhab/core/types/open_closed_type.rb +41 -0
- data/lib/openhab/{dsl → core}/types/percent_type.rb +19 -20
- data/lib/openhab/core/types/play_pause_type.rb +38 -0
- data/lib/openhab/core/types/point_type.rb +117 -0
- data/lib/openhab/core/types/quantity_type.rb +325 -0
- data/lib/openhab/core/types/raw_type.rb +26 -0
- data/lib/openhab/core/types/refresh_type.rb +27 -0
- data/lib/openhab/core/types/rewind_fastforward_type.rb +38 -0
- data/lib/openhab/core/types/stop_move_type.rb +34 -0
- data/lib/openhab/{dsl → core}/types/string_type.rb +17 -28
- data/lib/openhab/{dsl → core}/types/type.rb +42 -40
- data/lib/openhab/core/types/un_def_type.rb +38 -0
- data/lib/openhab/core/types/up_down_type.rb +50 -0
- data/lib/openhab/core/types.rb +82 -0
- data/lib/openhab/{dsl → core}/uid.rb +4 -23
- data/lib/openhab/core/value_cache.rb +188 -0
- data/lib/openhab/core.rb +98 -0
- data/lib/openhab/core_ext/between.rb +32 -0
- data/lib/openhab/core_ext/ephemeris.rb +53 -0
- data/lib/openhab/core_ext/java/class.rb +34 -0
- data/lib/openhab/core_ext/java/duration.rb +142 -0
- data/lib/openhab/core_ext/java/list.rb +436 -0
- data/lib/openhab/core_ext/java/local_date.rb +104 -0
- data/lib/openhab/core_ext/java/local_time.rb +118 -0
- data/lib/openhab/core_ext/java/map.rb +66 -0
- data/lib/openhab/core_ext/java/month.rb +71 -0
- data/lib/openhab/core_ext/java/month_day.rb +119 -0
- data/lib/openhab/core_ext/java/period.rb +103 -0
- data/lib/openhab/core_ext/java/temporal_amount.rb +34 -0
- data/lib/openhab/core_ext/java/time.rb +62 -0
- data/lib/openhab/core_ext/java/unit.rb +15 -0
- data/lib/openhab/core_ext/java/zoned_date_time.rb +213 -0
- data/lib/openhab/core_ext/ruby/array.rb +21 -0
- data/lib/openhab/core_ext/ruby/date.rb +96 -0
- data/lib/openhab/core_ext/ruby/date_time.rb +55 -0
- data/lib/openhab/core_ext/ruby/module.rb +15 -0
- data/lib/openhab/core_ext/ruby/numeric.rb +195 -0
- data/lib/openhab/core_ext/ruby/range.rb +70 -0
- data/lib/openhab/core_ext/ruby/symbol.rb +7 -0
- data/lib/openhab/core_ext/ruby/time.rb +108 -0
- data/lib/openhab/core_ext.rb +18 -0
- data/lib/openhab/dsl/debouncer.rb +259 -0
- data/lib/openhab/dsl/events/watch_event.rb +18 -0
- data/lib/openhab/dsl/events.rb +9 -0
- data/lib/openhab/dsl/gems.rb +1 -1
- data/lib/openhab/dsl/items/builder.rb +578 -0
- data/lib/openhab/dsl/items/ensure.rb +73 -82
- data/lib/openhab/dsl/items/timed_command.rb +214 -159
- data/lib/openhab/dsl/rules/automation_rule.rb +126 -115
- data/lib/openhab/dsl/rules/builder.rb +1935 -0
- data/lib/openhab/dsl/rules/guard.rb +51 -114
- data/lib/openhab/dsl/rules/name_inference.rb +66 -25
- data/lib/openhab/dsl/rules/property.rb +48 -75
- data/lib/openhab/dsl/rules/rule_triggers.rb +22 -27
- data/lib/openhab/dsl/rules/terse.rb +58 -14
- data/lib/openhab/dsl/rules/triggers/changed.rb +48 -94
- data/lib/openhab/dsl/rules/triggers/channel.rb +9 -40
- data/lib/openhab/dsl/rules/triggers/command.rb +14 -63
- data/lib/openhab/dsl/rules/triggers/conditions/duration.rb +34 -69
- data/lib/openhab/dsl/rules/triggers/conditions/proc.rb +6 -14
- data/lib/openhab/dsl/rules/triggers/cron/cron.rb +48 -82
- data/lib/openhab/dsl/rules/triggers/cron/cron_handler.rb +30 -47
- data/lib/openhab/dsl/rules/triggers/trigger.rb +7 -28
- data/lib/openhab/dsl/rules/triggers/updated.rb +21 -45
- data/lib/openhab/dsl/rules/triggers/watch/watch_handler.rb +257 -102
- data/lib/openhab/dsl/rules/triggers.rb +12 -0
- data/lib/openhab/dsl/rules.rb +8 -0
- data/lib/openhab/dsl/things/builder.rb +299 -0
- data/lib/openhab/{core → dsl}/thread_local.rb +27 -17
- data/lib/openhab/dsl/timer_manager.rb +204 -0
- data/lib/openhab/dsl/version.rb +9 -0
- data/lib/openhab/dsl.rb +979 -0
- data/lib/openhab/log.rb +355 -0
- data/lib/openhab/osgi.rb +68 -0
- data/lib/openhab/rspec/configuration.rb +56 -0
- data/lib/openhab/rspec/example_group.rb +132 -0
- data/lib/openhab/rspec/helpers.rb +458 -0
- data/lib/openhab/rspec/hooks.rb +113 -0
- data/lib/openhab/rspec/jruby.rb +46 -0
- data/lib/openhab/rspec/karaf.rb +851 -0
- data/lib/openhab/rspec/mocks/bundle_install_support.rb +25 -0
- data/lib/openhab/rspec/mocks/bundle_resolver.rb +30 -0
- data/lib/openhab/rspec/mocks/event_admin.rb +146 -0
- data/lib/openhab/rspec/mocks/instance_method_stasher.rb +22 -0
- data/lib/openhab/rspec/mocks/persistence_service.rb +155 -0
- data/lib/openhab/rspec/mocks/safe_caller.rb +40 -0
- data/lib/openhab/rspec/mocks/space.rb +23 -0
- data/lib/openhab/rspec/mocks/synchronous_executor.rb +63 -0
- data/lib/openhab/rspec/mocks/thing_handler.rb +76 -0
- data/lib/openhab/rspec/mocks/timer.rb +134 -0
- data/lib/openhab/rspec/openhab/core/actions.rb +38 -0
- data/lib/openhab/rspec/openhab/core/items/proxy.rb +15 -0
- data/lib/openhab/rspec/openhab/core/things/proxy.rb +27 -0
- data/lib/openhab/rspec/shell.rb +31 -0
- data/lib/openhab/rspec/suspend_rules.rb +50 -0
- data/lib/openhab/rspec.rb +26 -0
- data/lib/openhab/yard/base_helper.rb +19 -0
- data/lib/openhab/yard/cli/stats.rb +23 -0
- data/lib/openhab/yard/code_objects/group_object.rb +23 -0
- data/lib/openhab/yard/code_objects/java/base.rb +31 -0
- data/lib/openhab/yard/code_objects/java/class_object.rb +11 -0
- data/lib/openhab/yard/code_objects/java/field_object.rb +15 -0
- data/lib/openhab/yard/code_objects/java/interface_object.rb +15 -0
- data/lib/openhab/yard/code_objects/java/package_object.rb +11 -0
- data/lib/openhab/yard/code_objects/java/proxy.rb +23 -0
- data/lib/openhab/yard/coderay.rb +17 -0
- data/lib/openhab/yard/handlers/jruby/base.rb +58 -0
- data/lib/openhab/yard/handlers/jruby/class_handler.rb +18 -0
- data/lib/openhab/yard/handlers/jruby/constant_handler.rb +18 -0
- data/lib/openhab/yard/handlers/jruby/java_import_handler.rb +30 -0
- data/lib/openhab/yard/handlers/jruby/mixin_handler.rb +23 -0
- data/lib/openhab/yard/html_helper.rb +78 -0
- data/lib/openhab/yard/markdown_helper.rb +148 -0
- data/lib/openhab/yard/tags/constant_directive.rb +20 -0
- data/lib/openhab/yard/tags/group_directive.rb +24 -0
- data/lib/openhab/yard/tags/library.rb +3 -0
- data/lib/openhab/yard.rb +38 -0
- metadata +475 -106
- data/lib/openhab/core/item_proxy.rb +0 -29
- data/lib/openhab/core/load_path.rb +0 -19
- data/lib/openhab/core/openhab_setup.rb +0 -29
- data/lib/openhab/core/osgi.rb +0 -58
- data/lib/openhab/core/services.rb +0 -24
- data/lib/openhab/dsl/actions.rb +0 -114
- data/lib/openhab/dsl/between.rb +0 -25
- data/lib/openhab/dsl/channel.rb +0 -43
- data/lib/openhab/dsl/dsl.rb +0 -59
- data/lib/openhab/dsl/group.rb +0 -54
- data/lib/openhab/dsl/imports.rb +0 -21
- data/lib/openhab/dsl/items/color_item.rb +0 -76
- data/lib/openhab/dsl/items/comparable_item.rb +0 -62
- data/lib/openhab/dsl/items/contact_item.rb +0 -41
- data/lib/openhab/dsl/items/date_time_item.rb +0 -65
- data/lib/openhab/dsl/items/dimmer_item.rb +0 -65
- data/lib/openhab/dsl/items/generic_item.rb +0 -229
- data/lib/openhab/dsl/items/group_item.rb +0 -127
- data/lib/openhab/dsl/items/item_equality.rb +0 -59
- data/lib/openhab/dsl/items/item_registry.rb +0 -54
- data/lib/openhab/dsl/items/items.rb +0 -109
- data/lib/openhab/dsl/items/location_item.rb +0 -59
- data/lib/openhab/dsl/items/metadata.rb +0 -326
- data/lib/openhab/dsl/items/number_item.rb +0 -17
- data/lib/openhab/dsl/items/numeric_item.rb +0 -87
- data/lib/openhab/dsl/items/persistence.rb +0 -307
- data/lib/openhab/dsl/items/player_item.rb +0 -58
- data/lib/openhab/dsl/items/rollershutter_item.rb +0 -51
- data/lib/openhab/dsl/items/semantics/enumerable.rb +0 -91
- data/lib/openhab/dsl/items/semantics.rb +0 -227
- data/lib/openhab/dsl/items/string_item.rb +0 -51
- data/lib/openhab/dsl/items/switch_item.rb +0 -70
- data/lib/openhab/dsl/monkey_patch/actions/actions.rb +0 -4
- data/lib/openhab/dsl/monkey_patch/actions/script_thing_actions.rb +0 -39
- data/lib/openhab/dsl/monkey_patch/events/events.rb +0 -7
- data/lib/openhab/dsl/monkey_patch/events/item_command.rb +0 -85
- data/lib/openhab/dsl/monkey_patch/events/item_event.rb +0 -28
- data/lib/openhab/dsl/monkey_patch/events/item_state.rb +0 -61
- data/lib/openhab/dsl/monkey_patch/events/item_state_changed.rb +0 -60
- data/lib/openhab/dsl/monkey_patch/events/thing_status_info.rb +0 -33
- data/lib/openhab/dsl/monkey_patch/java/java.rb +0 -4
- data/lib/openhab/dsl/monkey_patch/java/local_time.rb +0 -44
- data/lib/openhab/dsl/monkey_patch/java/time_extensions.rb +0 -50
- data/lib/openhab/dsl/monkey_patch/java/zoned_date_time.rb +0 -45
- data/lib/openhab/dsl/monkey_patch/ruby/number.rb +0 -104
- data/lib/openhab/dsl/monkey_patch/ruby/ruby.rb +0 -6
- data/lib/openhab/dsl/monkey_patch/ruby/string.rb +0 -47
- data/lib/openhab/dsl/monkey_patch/ruby/time.rb +0 -61
- data/lib/openhab/dsl/openhab.rb +0 -30
- data/lib/openhab/dsl/persistence.rb +0 -27
- data/lib/openhab/dsl/rules/item_event.rb +0 -19
- data/lib/openhab/dsl/rules/rule.rb +0 -160
- data/lib/openhab/dsl/rules/rule_config.rb +0 -147
- data/lib/openhab/dsl/rules/triggers/generic.rb +0 -31
- data/lib/openhab/dsl/rules/triggers/triggers.rb +0 -11
- data/lib/openhab/dsl/rules/triggers/watch/watch.rb +0 -81
- data/lib/openhab/dsl/states.rb +0 -89
- data/lib/openhab/dsl/things.rb +0 -147
- data/lib/openhab/dsl/time/month_day.rb +0 -180
- data/lib/openhab/dsl/time/time_of_day.rb +0 -235
- data/lib/openhab/dsl/timers/manager.rb +0 -119
- data/lib/openhab/dsl/timers/reentrant_timer.rb +0 -38
- data/lib/openhab/dsl/timers/timer.rb +0 -132
- data/lib/openhab/dsl/timers.rb +0 -77
- data/lib/openhab/dsl/types/increase_decrease_type.rb +0 -23
- data/lib/openhab/dsl/types/next_previous_type.rb +0 -23
- data/lib/openhab/dsl/types/on_off_type.rb +0 -28
- data/lib/openhab/dsl/types/open_closed_type.rb +0 -29
- data/lib/openhab/dsl/types/play_pause_type.rb +0 -27
- data/lib/openhab/dsl/types/point_type.rb +0 -180
- data/lib/openhab/dsl/types/quantity_type.rb +0 -265
- data/lib/openhab/dsl/types/refresh_type.rb +0 -18
- data/lib/openhab/dsl/types/rewind_fastforward_type.rb +0 -33
- data/lib/openhab/dsl/types/stop_move_type.rb +0 -23
- data/lib/openhab/dsl/types/types.rb +0 -83
- data/lib/openhab/dsl/types/un_def_type.rb +0 -22
- data/lib/openhab/dsl/types/up_down_type.rb +0 -32
- data/lib/openhab/dsl/units.rb +0 -45
- data/lib/openhab/log/configuration.rb +0 -21
- data/lib/openhab/log/logger.rb +0 -282
- data/lib/openhab/version.rb +0 -9
- data/lib/openhab.rb +0 -36
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module OpenHAB
|
|
4
|
-
module DSL
|
|
5
|
-
module Types
|
|
6
|
-
OpenClosedType = org.openhab.core.library.types.OpenClosedType
|
|
7
|
-
|
|
8
|
-
# Adds methods to core OpenHAB OpenClosedType to make it more natural in Ruby
|
|
9
|
-
class OpenClosedType
|
|
10
|
-
# @!parse include Type
|
|
11
|
-
|
|
12
|
-
# @!method open?
|
|
13
|
-
# Check if == +OPEN+
|
|
14
|
-
# @return [Boolean]
|
|
15
|
-
|
|
16
|
-
# @!method closed?
|
|
17
|
-
# Check if == +CLOSED+
|
|
18
|
-
# @return [Boolean]
|
|
19
|
-
|
|
20
|
-
# Invert the type
|
|
21
|
-
# @return [OpenClosedType] +OPEN+ if +CLOSED+, +CLOSED+ if +OPEN+
|
|
22
|
-
def !
|
|
23
|
-
return CLOSED if open?
|
|
24
|
-
return OPEN if closed?
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module OpenHAB
|
|
4
|
-
module DSL
|
|
5
|
-
module Types
|
|
6
|
-
PlayPauseType = org.openhab.core.library.types.PlayPauseType
|
|
7
|
-
|
|
8
|
-
# Adds methods to core OpenHAB PlayPauseType to make it more
|
|
9
|
-
# natural in Ruby
|
|
10
|
-
class PlayPauseType # rubocop:disable Lint/EmptyClass
|
|
11
|
-
# @!parse include Type
|
|
12
|
-
|
|
13
|
-
# @!method playing?
|
|
14
|
-
# Check if == +PLAY+
|
|
15
|
-
# @return [Boolean]
|
|
16
|
-
|
|
17
|
-
# @!parse alias play? playing?
|
|
18
|
-
|
|
19
|
-
# @!method paused?
|
|
20
|
-
# Check if == +PAUSE+
|
|
21
|
-
# @return [Boolean]
|
|
22
|
-
|
|
23
|
-
# @!parse alias pause? paused?
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module OpenHAB
|
|
4
|
-
module DSL
|
|
5
|
-
module Types
|
|
6
|
-
PointType = org.openhab.core.library.types.PointType
|
|
7
|
-
|
|
8
|
-
# global scope - required for jrubyscripting addon <= OH3.2.0
|
|
9
|
-
# @!visibility private
|
|
10
|
-
::PointType = PointType if ::PointType.is_a?(java.lang.Class)
|
|
11
|
-
|
|
12
|
-
# Adds methods to core OpenHAB PointType to make it more natural in Ruby
|
|
13
|
-
class PointType
|
|
14
|
-
# @!parse include PrimitiveType
|
|
15
|
-
|
|
16
|
-
# @overload initialize(latitude, longitude, altitude)
|
|
17
|
-
# @param [DecimalType, QuantityType, StringType, Numeric] latitude
|
|
18
|
-
# @param [DecimalType, QuantityType, StringType, Numeric] longitude
|
|
19
|
-
# @param [DecimalType, QuantityType, StringType, Numeric] altitude
|
|
20
|
-
def initialize(*args) # rubocop:disable Metrics
|
|
21
|
-
args = from_hash(args.first.to_hash) if args.first.respond_to? :to_hash
|
|
22
|
-
if (2..3).cover?(args.length)
|
|
23
|
-
args = args.each_with_index.map do |value, index|
|
|
24
|
-
if value.is_a?(DecimalType) || value.is_a?(StringType)
|
|
25
|
-
value
|
|
26
|
-
elsif value.is_a?(QuantityType)
|
|
27
|
-
unit = index == 2 ? Units.unit || SIUnits::METRE : Units::DEGREE_ANGLE
|
|
28
|
-
DecimalType.new(value.to_unit(unit).to_big_decimal)
|
|
29
|
-
elsif value.respond_to?(:to_str)
|
|
30
|
-
StringType.new(value.to_str)
|
|
31
|
-
elsif value.respond_to?(:to_d)
|
|
32
|
-
DecimalType.new(value)
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
super(*args)
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
#
|
|
41
|
-
# Check equality without type conversion
|
|
42
|
-
#
|
|
43
|
-
# @return [Boolean] if the same value is represented, without type
|
|
44
|
-
# conversion
|
|
45
|
-
def eql?(other)
|
|
46
|
-
return false unless other.instance_of?(self.class)
|
|
47
|
-
|
|
48
|
-
equals(other.to_s).zero?
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
#
|
|
52
|
-
# Check equality with type conversion
|
|
53
|
-
#
|
|
54
|
-
# @param [PointType, Items::LocationItem, String]
|
|
55
|
-
# other object to compare to
|
|
56
|
-
#
|
|
57
|
-
# @return [Boolean]
|
|
58
|
-
#
|
|
59
|
-
def ==(other) # rubocop:disable Metrics
|
|
60
|
-
logger.trace { "(#{self.class}) #{self} == #{other} (#{other.class})" }
|
|
61
|
-
if other.is_a?(Items::LocationItem) ||
|
|
62
|
-
(other.is_a?(Items::GroupItem) && other.base_item.is_a?(LocationItem))
|
|
63
|
-
return false unless other.state?
|
|
64
|
-
|
|
65
|
-
self == other.state
|
|
66
|
-
elsif other.respond_to?(:to_str)
|
|
67
|
-
self == PointType.new(other)
|
|
68
|
-
elsif other.respond_to?(:coerce)
|
|
69
|
-
return false unless (lhs, rhs = other.coerce(self))
|
|
70
|
-
|
|
71
|
-
lhs == rhs
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
#
|
|
76
|
-
# Type Coercion
|
|
77
|
-
#
|
|
78
|
-
# Coerce object to a PointType
|
|
79
|
-
#
|
|
80
|
-
# @param [Items::LocationItem, String] other object to coerce to a
|
|
81
|
-
# PointType
|
|
82
|
-
#
|
|
83
|
-
# @return [[PointType, PointType]]
|
|
84
|
-
#
|
|
85
|
-
def coerce(other)
|
|
86
|
-
lhs = coerce_single(other)
|
|
87
|
-
return unless lhs
|
|
88
|
-
|
|
89
|
-
[lhs, self]
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
# rename raw methods so we can overwrite them
|
|
93
|
-
# @!visibility private
|
|
94
|
-
alias raw_latitude latitude
|
|
95
|
-
# .
|
|
96
|
-
# @!visibility private
|
|
97
|
-
alias raw_longitude longitude
|
|
98
|
-
# .
|
|
99
|
-
# @!visibility private
|
|
100
|
-
alias raw_altitude altitude
|
|
101
|
-
# .
|
|
102
|
-
# @!visibility private
|
|
103
|
-
alias raw_distance_from distance_from
|
|
104
|
-
|
|
105
|
-
# @!attribute [r] latitude
|
|
106
|
-
# @return [QuantityType]
|
|
107
|
-
def latitude
|
|
108
|
-
QuantityType.new(raw_latitude.to_big_decimal, SIUnits::DEGREE_ANGLE)
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
# @!attribute [r] longitude
|
|
112
|
-
# @return [QuantityType]
|
|
113
|
-
def longitude
|
|
114
|
-
QuantityType.new(raw_longitude.to_big_decimal, SIUnits::DEGREE_ANGLE)
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
# @!attribute [r] altitude
|
|
118
|
-
# @return [QuantityType]
|
|
119
|
-
def altitude
|
|
120
|
-
QuantityType.new(raw_altitude.to_big_decimal, Units::METRE)
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
#
|
|
124
|
-
# Convert the PointType to a hash
|
|
125
|
-
# @return [Hash] with keys latitude/longitude/altitude
|
|
126
|
-
def to_h
|
|
127
|
-
{ latitude: latitude, longitude: longitude, altitude: altitude }
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
#
|
|
131
|
-
# Calculate the distance in meters from other, ignoring altitude.
|
|
132
|
-
#
|
|
133
|
-
# This algorithm also ignores the oblate spheroid shape of Earth and
|
|
134
|
-
# assumes a perfect sphere, so results are inexact.
|
|
135
|
-
#
|
|
136
|
-
# @return [QuantityType]
|
|
137
|
-
def distance_from(other)
|
|
138
|
-
logger.trace("(#{self}).distance_from(#{other} (#{other.class})")
|
|
139
|
-
other = coerce_single(other)
|
|
140
|
-
raise TypeError, "#{other.class} can't be coerced into #{self.class}" unless other
|
|
141
|
-
|
|
142
|
-
QuantityType.new(raw_distance_from(other), SIUnits::METRE)
|
|
143
|
-
end
|
|
144
|
-
alias - distance_from
|
|
145
|
-
|
|
146
|
-
private
|
|
147
|
-
|
|
148
|
-
# coerce an object to a PointType
|
|
149
|
-
# @return [PointType]
|
|
150
|
-
def coerce_single(other) # rubocop:disable Metrics
|
|
151
|
-
logger.trace("Coercing #{self} as a request from #{other.class}")
|
|
152
|
-
if other.is_a?(PointType)
|
|
153
|
-
other
|
|
154
|
-
elsif other.is_a?(Items::LocationItem)
|
|
155
|
-
return unless other.state?
|
|
156
|
-
|
|
157
|
-
other.state
|
|
158
|
-
elsif other.respond_to?(:to_str)
|
|
159
|
-
PointType.new(other.to_str)
|
|
160
|
-
elsif other.respond_to?(:to_hash)
|
|
161
|
-
PointType.new(other.to_hash)
|
|
162
|
-
end
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
#
|
|
166
|
-
# Convert hash into ordered arguments for constructor
|
|
167
|
-
#
|
|
168
|
-
def from_hash(hash)
|
|
169
|
-
keys = [%i[lat long alt], %i[latitude longitude altitude]]
|
|
170
|
-
keys.each do |key_set|
|
|
171
|
-
values = hash.transform_keys(&:to_sym).values_at(*key_set)
|
|
172
|
-
|
|
173
|
-
return *values.compact if values[0..1].all?
|
|
174
|
-
end
|
|
175
|
-
raise ArgumentError, "Supplied arguments (#{hash}) must contain one of the following sets #{keys}"
|
|
176
|
-
end
|
|
177
|
-
end
|
|
178
|
-
end
|
|
179
|
-
end
|
|
180
|
-
end
|
|
@@ -1,265 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'numeric_type'
|
|
4
|
-
|
|
5
|
-
module OpenHAB
|
|
6
|
-
module DSL
|
|
7
|
-
module Types
|
|
8
|
-
QuantityType = org.openhab.core.library.types.QuantityType
|
|
9
|
-
|
|
10
|
-
# global alias - required for jrubyscripting addon <= OH3.2.0
|
|
11
|
-
::QuantityType = QuantityType if ::QuantityType.is_a?(java.lang.Class)
|
|
12
|
-
|
|
13
|
-
# @deprecated
|
|
14
|
-
# Backwards-compatible alias
|
|
15
|
-
Quantity = QuantityType
|
|
16
|
-
|
|
17
|
-
# Adds methods to core OpenHAB QuantityType to make it more natural in Ruby
|
|
18
|
-
class QuantityType # rubocop:disable Metrics/ClassLength
|
|
19
|
-
# @!parse include Type
|
|
20
|
-
include NumericType
|
|
21
|
-
|
|
22
|
-
# private alias
|
|
23
|
-
ONE_UNIT = org.openhab.core.library.unit.Units::ONE
|
|
24
|
-
private_constant :ONE_UNIT
|
|
25
|
-
|
|
26
|
-
#
|
|
27
|
-
# Convert this quantity into a another unit
|
|
28
|
-
#
|
|
29
|
-
alias | to_unit
|
|
30
|
-
|
|
31
|
-
#
|
|
32
|
-
# Comparison
|
|
33
|
-
#
|
|
34
|
-
# @param [NumericType, Items::NumericItem, Numeric, String]
|
|
35
|
-
# other object to compare to
|
|
36
|
-
#
|
|
37
|
-
# @return [Integer, nil] -1, 0, +1 depending on whether +other+ is
|
|
38
|
-
# less than, equal to, or greater than self
|
|
39
|
-
#
|
|
40
|
-
# nil is returned if the two values are incomparable
|
|
41
|
-
#
|
|
42
|
-
def <=>(other) # rubocop:disable Metrics
|
|
43
|
-
logger.trace("(#{self.class}) #{self} <=> #{other} (#{other.class})")
|
|
44
|
-
if other.is_a?(self.class)
|
|
45
|
-
return unitize(other.unit).compare_to(other) if unit == ONE_UNIT
|
|
46
|
-
return compare_to(other.unitize(unit)) if other.unit == ONE_UNIT
|
|
47
|
-
|
|
48
|
-
compare_to(other)
|
|
49
|
-
elsif other.is_a?(Items::NumericItem) ||
|
|
50
|
-
(other.is_a?(Items::GroupItem) && other.base_item.is_a?(NumericItem))
|
|
51
|
-
return nil unless other.state?
|
|
52
|
-
|
|
53
|
-
self <=> other.state
|
|
54
|
-
elsif other.respond_to?(:to_str)
|
|
55
|
-
compare_to(QuantityType.new(other.to_str))
|
|
56
|
-
elsif other.respond_to?(:to_d)
|
|
57
|
-
compare_to(QuantityType.new(other.to_d.to_java, Units.unit || unit))
|
|
58
|
-
elsif other.respond_to?(:coerce)
|
|
59
|
-
return nil unless (lhs, rhs = other.coerce(self))
|
|
60
|
-
|
|
61
|
-
lhs <=> rhs
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
#
|
|
66
|
-
# Type Coercion
|
|
67
|
-
#
|
|
68
|
-
# Coerce object to a QuantityType
|
|
69
|
-
#
|
|
70
|
-
# @param [Items::NumericItem, Numeric, Type, String] other object to
|
|
71
|
-
# coerce to a {QuantityType}
|
|
72
|
-
#
|
|
73
|
-
# if +other+ is a {Type}, +self+ will instead be coerced
|
|
74
|
-
# to that type to accomodate comparison with things such as {OnOffType}
|
|
75
|
-
#
|
|
76
|
-
# @return [[QuantityType, QuantityType]]
|
|
77
|
-
def coerce(other) # rubocop:disable Metrics
|
|
78
|
-
logger.trace("Coercing #{self} as a request from #{other.class}")
|
|
79
|
-
if other.is_a?(Items::NumericItem) ||
|
|
80
|
-
(other.is_a?(Items::GroupItem) && other.base_item.is_a?(Items::NumericItem))
|
|
81
|
-
return unless other.state?
|
|
82
|
-
|
|
83
|
-
[other.state, self]
|
|
84
|
-
elsif other.is_a?(Type)
|
|
85
|
-
[other, as(other.class)]
|
|
86
|
-
elsif other.respond_to?(:to_d)
|
|
87
|
-
[QuantityType.new(other.to_d.to_java, ONE_UNIT), self]
|
|
88
|
-
elsif other.is_a?(String)
|
|
89
|
-
[QuantityType.new(other), self]
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
# arithmetic operators
|
|
94
|
-
alias -@ negate
|
|
95
|
-
|
|
96
|
-
{
|
|
97
|
-
:add => :+,
|
|
98
|
-
:subtract => :-
|
|
99
|
-
}.each do |java_op, ruby_op|
|
|
100
|
-
convert = 'self.class.new(other, Units.unit || unit)'
|
|
101
|
-
|
|
102
|
-
class_eval( # rubocop:disable Style/DocumentDynamicEvalDefinition https://github.com/rubocop/rubocop/issues/10179
|
|
103
|
-
# def +(other)
|
|
104
|
-
# logger.trace("#{self} + #{other} (#{other.class})")
|
|
105
|
-
# if other.is_a?(Items::NumericItem) ||
|
|
106
|
-
# (other.is_a?(Items::GroupItem) && other.base_item.is_a?(Items::NumericItem))
|
|
107
|
-
# self + other.state
|
|
108
|
-
# elsif other.is_a?(QuantityType)
|
|
109
|
-
# add_quantity(other)
|
|
110
|
-
# elsif other.is_a?(DecimalType)
|
|
111
|
-
# other = other.to_big_decimal
|
|
112
|
-
# add_quantity(self.class.new(other, Units.unit || unit))
|
|
113
|
-
# elsif other.is_a?(java.math.BigDecimal)
|
|
114
|
-
# add_quantity(self.class.new(other, Units.unit || unit))
|
|
115
|
-
# elsif other.respond_to?(:to_str)
|
|
116
|
-
# self + self.class.new(other)
|
|
117
|
-
# elsif other.respond_to?(:to_d)
|
|
118
|
-
# other = other.to_d.to_java
|
|
119
|
-
# add_quantity(self.class.new(other, Units.unit || unit))
|
|
120
|
-
# elsif other.respond_to?(:coerce) && (lhs, rhs = other.coerce(to_d))
|
|
121
|
-
# lhs + rhs
|
|
122
|
-
# else
|
|
123
|
-
# raise TypeError, "#{other.class} can't be coerced into #{self.class}"
|
|
124
|
-
# end
|
|
125
|
-
# end
|
|
126
|
-
<<~RUBY, __FILE__, __LINE__ + 1
|
|
127
|
-
def #{ruby_op}(other)
|
|
128
|
-
logger.trace("\#{self} #{ruby_op} \#{other} (\#{other.class})")
|
|
129
|
-
if other.is_a?(Items::NumericItem) ||
|
|
130
|
-
(other.is_a?(Items::GroupItem) && other.base_item.is_a?(Items::NumericItem))
|
|
131
|
-
self #{ruby_op} other.state
|
|
132
|
-
elsif other.is_a?(QuantityType)
|
|
133
|
-
#{java_op}_quantity(other)
|
|
134
|
-
elsif other.is_a?(DecimalType)
|
|
135
|
-
other = other.to_big_decimal
|
|
136
|
-
#{java_op}_quantity(#{convert})
|
|
137
|
-
elsif other.is_a?(java.math.BigDecimal)
|
|
138
|
-
#{java_op}_quantity(#{convert})
|
|
139
|
-
elsif other.respond_to?(:to_str)
|
|
140
|
-
self #{ruby_op} self.class.new(other)
|
|
141
|
-
elsif other.respond_to?(:to_d)
|
|
142
|
-
other = other.to_d.to_java
|
|
143
|
-
#{java_op}_quantity(#{convert})
|
|
144
|
-
elsif other.respond_to?(:coerce) && (lhs, rhs = other.coerce(to_d))
|
|
145
|
-
lhs #{ruby_op} rhs
|
|
146
|
-
else
|
|
147
|
-
raise TypeError, "\#{other.class} can't be coerced into \#{self.class}"
|
|
148
|
-
end
|
|
149
|
-
end
|
|
150
|
-
RUBY
|
|
151
|
-
)
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
{
|
|
155
|
-
:multiply => :*,
|
|
156
|
-
:divide => :/
|
|
157
|
-
}.each do |java_op, ruby_op|
|
|
158
|
-
class_eval( # rubocop:disable Style/DocumentDynamicEvalDefinition https://github.com/rubocop/rubocop/issues/10179
|
|
159
|
-
# def *(other)
|
|
160
|
-
# logger.trace("#{self} * #{other} (#{other.class})")
|
|
161
|
-
# if other.is_a?(Items::NumericItem) ||
|
|
162
|
-
# (other.is_a?(Items::GroupItem) && other.base_item.is_a?(Items::NumericItem))
|
|
163
|
-
# self * other.state
|
|
164
|
-
# elsif other.is_a?(QuantityType)
|
|
165
|
-
# multiply_quantity(other)
|
|
166
|
-
# elsif other.is_a?(DecimalType)
|
|
167
|
-
# multiply(other.to_big_decimal)
|
|
168
|
-
# elsif other.is_a?(java.math.BigDecimal)
|
|
169
|
-
# multiply(other)
|
|
170
|
-
# elsif other.respond_to?(:to_str)
|
|
171
|
-
# self * self.class.new(other)
|
|
172
|
-
# elsif other.respond_to?(:to_d)
|
|
173
|
-
# multiply(other.to_d.to_java)
|
|
174
|
-
# elsif other.respond_to?(:coerce) && (lhs, rhs = other.coerce(to_d))
|
|
175
|
-
# lhs * rhs
|
|
176
|
-
# else
|
|
177
|
-
# raise TypeError, "#{other.class} can't be coerced into #{self.class}"
|
|
178
|
-
# end
|
|
179
|
-
# end
|
|
180
|
-
<<~RUBY, __FILE__, __LINE__ + 1
|
|
181
|
-
def #{ruby_op}(other)
|
|
182
|
-
logger.trace("\#{self} #{ruby_op} \#{other} (\#{other.class})")
|
|
183
|
-
if other.is_a?(Items::NumericItem) ||
|
|
184
|
-
(other.is_a?(Items::GroupItem) && other.base_item.is_a?(Items::NumericItem))
|
|
185
|
-
self #{ruby_op} other.state
|
|
186
|
-
elsif other.is_a?(QuantityType)
|
|
187
|
-
#{java_op}_quantity(other)
|
|
188
|
-
elsif other.is_a?(DecimalType)
|
|
189
|
-
#{java_op}(other.to_big_decimal)
|
|
190
|
-
elsif other.is_a?(java.math.BigDecimal)
|
|
191
|
-
#{java_op}(other)
|
|
192
|
-
elsif other.respond_to?(:to_str)
|
|
193
|
-
self #{ruby_op} self.class.new(other)
|
|
194
|
-
elsif other.respond_to?(:to_d)
|
|
195
|
-
#{java_op}(other.to_d.to_java)
|
|
196
|
-
elsif other.respond_to?(:coerce) && (lhs, rhs = other.coerce(to_d))
|
|
197
|
-
lhs #{ruby_op} rhs
|
|
198
|
-
else
|
|
199
|
-
raise TypeError, "\#{other.class} can't be coerced into \#{self.class}"
|
|
200
|
-
end
|
|
201
|
-
end
|
|
202
|
-
RUBY
|
|
203
|
-
)
|
|
204
|
-
end
|
|
205
|
-
|
|
206
|
-
# if it's a dimensionless quantity, change the unit to match other_unit
|
|
207
|
-
# @!visibility private
|
|
208
|
-
def unitize(other_unit = unit)
|
|
209
|
-
# prefer converting to the thread-specified unit if there is one
|
|
210
|
-
other_unit = Units.unit || other_unit
|
|
211
|
-
logger.trace("Converting #{self} to #{other_unit}")
|
|
212
|
-
|
|
213
|
-
case unit
|
|
214
|
-
when ONE_UNIT
|
|
215
|
-
QuantityType.new(to_big_decimal, other_unit)
|
|
216
|
-
when other_unit
|
|
217
|
-
self
|
|
218
|
-
else
|
|
219
|
-
to_unit(other_unit)
|
|
220
|
-
end
|
|
221
|
-
end
|
|
222
|
-
|
|
223
|
-
# if unit is +ONE_UNIT+, return a plain Java BigDecimal
|
|
224
|
-
# @!visibility private
|
|
225
|
-
def deunitize
|
|
226
|
-
return to_big_decimal if unit == ONE_UNIT
|
|
227
|
-
|
|
228
|
-
self
|
|
229
|
-
end
|
|
230
|
-
|
|
231
|
-
private
|
|
232
|
-
|
|
233
|
-
# do addition directly against a QuantityType while ensuring we unitize
|
|
234
|
-
# both sides
|
|
235
|
-
def add_quantity(other)
|
|
236
|
-
unitize(other.unit).add(other.unitize(unit))
|
|
237
|
-
end
|
|
238
|
-
|
|
239
|
-
# do subtraction directly against a QuantityType while ensuring we
|
|
240
|
-
# unitize both sides
|
|
241
|
-
def subtract_quantity(other)
|
|
242
|
-
unitize(other.unit).subtract(other.unitize(unit))
|
|
243
|
-
end
|
|
244
|
-
|
|
245
|
-
# do multiplication directly against a QuantityType while ensuring
|
|
246
|
-
# we deunitize both sides, and also invert the operation if one side
|
|
247
|
-
# isn't actually a unit
|
|
248
|
-
def multiply_quantity(other)
|
|
249
|
-
lhs = deunitize
|
|
250
|
-
rhs = other.deunitize
|
|
251
|
-
# reverse the arguments if it's multiplication and the LHS isn't a QuantityType
|
|
252
|
-
lhs, rhs = rhs, lhs if lhs.is_a?(java.math.BigDecimal)
|
|
253
|
-
# what a waste... using a QuantityType to multiply two dimensionless quantities
|
|
254
|
-
# have to make sure lhs is still a QuantityType in order to return a new
|
|
255
|
-
# QuantityType that's still dimensionless
|
|
256
|
-
lhs = other if lhs.is_a?(java.math.BigDecimal)
|
|
257
|
-
|
|
258
|
-
lhs.multiply(rhs)
|
|
259
|
-
end
|
|
260
|
-
|
|
261
|
-
alias divide_quantity divide
|
|
262
|
-
end
|
|
263
|
-
end
|
|
264
|
-
end
|
|
265
|
-
end
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module OpenHAB
|
|
4
|
-
module DSL
|
|
5
|
-
module Types
|
|
6
|
-
RefreshType = org.openhab.core.types.RefreshType
|
|
7
|
-
|
|
8
|
-
# Adds methods to core OpenHAB RefreshType to make it more natural in Ruby
|
|
9
|
-
class RefreshType # rubocop:disable Lint/EmptyClass
|
|
10
|
-
# @!parse include Type
|
|
11
|
-
|
|
12
|
-
# @!method refresh?
|
|
13
|
-
# Check if == +REFRESH+
|
|
14
|
-
# @return [Boolean]
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module OpenHAB
|
|
4
|
-
module DSL
|
|
5
|
-
module Types
|
|
6
|
-
RewindFastforwardType = org.openhab.core.library.types.RewindFastforwardType
|
|
7
|
-
|
|
8
|
-
# Adds methods to core OpenHAB RewindFastforwardType to make it more
|
|
9
|
-
# natural in Ruby
|
|
10
|
-
class RewindFastforwardType # rubocop:disable Lint/EmptyClass
|
|
11
|
-
# @!parse include Type
|
|
12
|
-
|
|
13
|
-
# @!method rewinding?
|
|
14
|
-
# Check if == +REWIND+
|
|
15
|
-
# @return [Boolean]
|
|
16
|
-
|
|
17
|
-
# @!parse alias rewind? rewinding?
|
|
18
|
-
|
|
19
|
-
# @!method fast_forwarding?
|
|
20
|
-
# Check if == +FASTFORWARD+
|
|
21
|
-
# @return [Boolean]
|
|
22
|
-
|
|
23
|
-
# @!parse alias fast_forward? fast_forwarding?
|
|
24
|
-
|
|
25
|
-
# @deprecated
|
|
26
|
-
# @!parse alias fastforward? fast_forwarding?
|
|
27
|
-
|
|
28
|
-
# @deprecated
|
|
29
|
-
# @!parse alias fastforwarding? fast_forwarding?
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module OpenHAB
|
|
4
|
-
module DSL
|
|
5
|
-
module Types
|
|
6
|
-
StopMoveType = org.openhab.core.library.types.StopMoveType
|
|
7
|
-
|
|
8
|
-
# Adds methods to core OpenHAB StopMoveType to make it more
|
|
9
|
-
# natural in Ruby
|
|
10
|
-
class StopMoveType # rubocop:disable Lint/EmptyClass
|
|
11
|
-
# @!parse include Type
|
|
12
|
-
|
|
13
|
-
# @!method stop?
|
|
14
|
-
# Check if == +STOP+
|
|
15
|
-
# @return [Boolean]
|
|
16
|
-
|
|
17
|
-
# @!method move?
|
|
18
|
-
# Check if == +MOVE+
|
|
19
|
-
# @return [Boolean]
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'openhab/log/logger'
|
|
4
|
-
|
|
5
|
-
require_relative 'type'
|
|
6
|
-
|
|
7
|
-
require_relative 'date_time_type'
|
|
8
|
-
require_relative 'decimal_type'
|
|
9
|
-
require_relative 'hsb_type'
|
|
10
|
-
require_relative 'increase_decrease_type'
|
|
11
|
-
require_relative 'next_previous_type'
|
|
12
|
-
require_relative 'open_closed_type'
|
|
13
|
-
require_relative 'on_off_type'
|
|
14
|
-
require_relative 'percent_type'
|
|
15
|
-
require_relative 'play_pause_type'
|
|
16
|
-
require_relative 'point_type'
|
|
17
|
-
require_relative 'quantity_type'
|
|
18
|
-
require_relative 'refresh_type'
|
|
19
|
-
require_relative 'rewind_fastforward_type'
|
|
20
|
-
require_relative 'stop_move_type'
|
|
21
|
-
require_relative 'string_type'
|
|
22
|
-
require_relative 'up_down_type'
|
|
23
|
-
require_relative 'un_def_type'
|
|
24
|
-
|
|
25
|
-
module OpenHAB
|
|
26
|
-
module DSL
|
|
27
|
-
# Hash taking a Enum value, and returning two symbols of
|
|
28
|
-
# predicates to be defined for it. the first is the "command" form,
|
|
29
|
-
# which should be defined on ItemCommandEvent, and on the Type itself.
|
|
30
|
-
# the second is "state" form, which should be defined on the applicable
|
|
31
|
-
# Item, and on the Type itself.
|
|
32
|
-
# @!visibility private
|
|
33
|
-
PREDICATE_ALIASES = Hash.new { |_h, k| [:"#{k.downcase}?"] * 2 }
|
|
34
|
-
.merge({
|
|
35
|
-
'PLAY' => %i[play? playing?],
|
|
36
|
-
'PAUSE' => %i[pause? paused?],
|
|
37
|
-
'REWIND' => %i[rewind? rewinding?],
|
|
38
|
-
'FASTFORWARD' => %i[fast_forward? fast_forwarding?]
|
|
39
|
-
}).freeze
|
|
40
|
-
|
|
41
|
-
# Hash taking a Enum value, and returning an array of symbols
|
|
42
|
-
# of the command to define for it
|
|
43
|
-
# @!visibility private
|
|
44
|
-
COMMAND_ALIASES = Hash.new { |_h, k| k.downcase.to_sym }
|
|
45
|
-
.merge({
|
|
46
|
-
'FASTFORWARD' => :fast_forward
|
|
47
|
-
}).freeze
|
|
48
|
-
|
|
49
|
-
#
|
|
50
|
-
# Contains all OpenHAB *Type classes, as well as associated support
|
|
51
|
-
# modules
|
|
52
|
-
#
|
|
53
|
-
module Types
|
|
54
|
-
include OpenHAB::Log
|
|
55
|
-
|
|
56
|
-
constants.map { |c| const_get(c) }
|
|
57
|
-
.grep(Module)
|
|
58
|
-
.select { |k| k < java.lang.Enum }
|
|
59
|
-
.each do |klass|
|
|
60
|
-
# make sure == from Type is inherited
|
|
61
|
-
klass.remove_method(:==)
|
|
62
|
-
|
|
63
|
-
# dynamically define predicate methods
|
|
64
|
-
klass.values.each do |value| # rubocop:disable Style/HashEachMethods this isn't a Ruby hash
|
|
65
|
-
# include all the aliases that we define for items both command and
|
|
66
|
-
# state aliases (since types can be interrogated as an incoming
|
|
67
|
-
# command, or as the state of an item)
|
|
68
|
-
command = :"#{OpenHAB::DSL::COMMAND_ALIASES[value.to_s]}?"
|
|
69
|
-
states = OpenHAB::DSL::PREDICATE_ALIASES[value.to_s]
|
|
70
|
-
|
|
71
|
-
([command] | states).each do |method|
|
|
72
|
-
logger.trace("Defining #{klass}##{method} for #{value}")
|
|
73
|
-
klass.class_eval <<~RUBY, __FILE__, __LINE__ + 1
|
|
74
|
-
def #{method} # def on?
|
|
75
|
-
self == #{value} # self == ON
|
|
76
|
-
end # end
|
|
77
|
-
RUBY
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
end
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module OpenHAB
|
|
4
|
-
module DSL
|
|
5
|
-
module Types
|
|
6
|
-
UnDefType = org.openhab.core.types.UnDefType
|
|
7
|
-
|
|
8
|
-
# Adds methods to core OpenHAB UnDefType to make it more natural in Ruby
|
|
9
|
-
class UnDefType # rubocop:disable Lint/EmptyClass
|
|
10
|
-
# @!parse include Type
|
|
11
|
-
|
|
12
|
-
# @!method null?
|
|
13
|
-
# Check if == +NULL+
|
|
14
|
-
# @return [Boolean]
|
|
15
|
-
|
|
16
|
-
# @!method undef?
|
|
17
|
-
# Check if == +UNDEF+
|
|
18
|
-
# @return [Boolean]
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|