openhab-jrubyscripting 5.0.0.rc6 → 5.0.0.rc9
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.rb +1 -1
- data/lib/openhab/dsl/version.rb +1 -1
- data/lib/openhab/rspec/helpers.rb +18 -4
- metadata +1 -4
- data/lib/openhab/yard/base_helper.rb +0 -46
- data/lib/openhab/yard/markdown_directive.rb +0 -125
- data/lib/openhab/yard/markdown_helper.rb +0 -99
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b818f8062ce950e265819455075b42fd1cf2d1fc6270b57f547b3e93f19f0656
|
4
|
+
data.tar.gz: '08c396633d12172da0751719196247319731205b9ee6704ea4844bd3709321aa'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac9760ebe37190c941c973a4526ec8b8a7a2b1584585f324f80c531849f879f7cb471bcbac1beae02f3412fb6822fbb7e50e343e6e015e5ddbb9f5b552712a70
|
7
|
+
data.tar.gz: bc0ec52bafce17c3f090984370d98695fa49bfc1799293d1d6f421764f7a8ecfbe814c6d2b7bd6b03f023c0daefa517f3595bebcd7c0af53d0ce53ee153d4360
|
data/lib/openhab/core.rb
CHANGED
data/lib/openhab/dsl/version.rb
CHANGED
@@ -184,7 +184,7 @@ module OpenHAB
|
|
184
184
|
def autorequires
|
185
185
|
ENV["RUBYLIB"] ||= ""
|
186
186
|
ENV["RUBYLIB"] += ":" unless ENV["RUBYLIB"].empty?
|
187
|
-
ENV["RUBYLIB"] +=
|
187
|
+
ENV["RUBYLIB"] += rubylib_dirs.join(":")
|
188
188
|
|
189
189
|
$LOAD_PATH.unshift(*ENV["RUBYLIB"]
|
190
190
|
.split(File::PATH_SEPARATOR)
|
@@ -265,10 +265,15 @@ module OpenHAB
|
|
265
265
|
# @return [void]
|
266
266
|
#
|
267
267
|
def load_rules
|
268
|
-
automation_path = "#{org.openhab.core.OpenHAB.config_folder}/automation/
|
268
|
+
automation_path = "#{org.openhab.core.OpenHAB.config_folder}/automation/ruby"
|
269
|
+
lib_dirs = rubylib_dirs.map { |d| File.join(d, "") }
|
270
|
+
lib_dirs << File.join(gem_home, "")
|
269
271
|
|
270
272
|
SuspendRules.suspend_rules do
|
271
273
|
files = Dir["#{automation_path}/**/*.rb"]
|
274
|
+
files.reject! do |f|
|
275
|
+
lib_dirs.any? { |l| f.start_with?(l) }
|
276
|
+
end
|
272
277
|
files.sort_by { |f| [get_start_level(f), f] }.each do |f|
|
273
278
|
load f
|
274
279
|
rescue Exception => e
|
@@ -376,8 +381,17 @@ module OpenHAB
|
|
376
381
|
ca.get_configuration("org.openhab.automation.jrubyscripting", nil)&.properties
|
377
382
|
end
|
378
383
|
|
379
|
-
def
|
380
|
-
jrubyscripting_config&.get("
|
384
|
+
def gem_home
|
385
|
+
gem_home = jrubyscripting_config&.get("gem_home")
|
386
|
+
return "#{org.openhab.core.OpenHAB.config_folder}/automation/ruby/.gem" unless gem_home
|
387
|
+
|
388
|
+
# strip everything after the first {
|
389
|
+
gem_home.split("{", 2).first
|
390
|
+
end
|
391
|
+
|
392
|
+
def rubylib_dirs
|
393
|
+
jrubyscripting_config&.get("rubylib")&.split(File::PATH_SEPARATOR) ||
|
394
|
+
["#{org.openhab.core.OpenHAB.config_folder}/automation/ruby/lib"]
|
381
395
|
end
|
382
396
|
|
383
397
|
def get_start_level(file)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openhab-jrubyscripting
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.0.
|
4
|
+
version: 5.0.0.rc9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cody Cutrer
|
@@ -488,7 +488,6 @@ files:
|
|
488
488
|
- lib/openhab/rspec/shell.rb
|
489
489
|
- lib/openhab/rspec/suspend_rules.rb
|
490
490
|
- lib/openhab/yard.rb
|
491
|
-
- lib/openhab/yard/base_helper.rb
|
492
491
|
- lib/openhab/yard/cli/stats.rb
|
493
492
|
- lib/openhab/yard/code_objects/group_object.rb
|
494
493
|
- lib/openhab/yard/code_objects/java/base.rb
|
@@ -503,8 +502,6 @@ files:
|
|
503
502
|
- lib/openhab/yard/handlers/jruby/java_import_handler.rb
|
504
503
|
- lib/openhab/yard/handlers/jruby/mixin_handler.rb
|
505
504
|
- lib/openhab/yard/html_helper.rb
|
506
|
-
- lib/openhab/yard/markdown_directive.rb
|
507
|
-
- lib/openhab/yard/markdown_helper.rb
|
508
505
|
- lib/openhab/yard/tags/constant_directive.rb
|
509
506
|
- lib/openhab/yard/tags/group_directive.rb
|
510
507
|
- lib/openhab/yard/tags/library.rb
|
@@ -1,46 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "nokogiri"
|
4
|
-
|
5
|
-
module OpenHAB
|
6
|
-
module YARD
|
7
|
-
# @!visibility private
|
8
|
-
module BaseHelper
|
9
|
-
def preprocess(text)
|
10
|
-
html = Nokogiri::HTML5.fragment(text)
|
11
|
-
|
12
|
-
context = if ENV["ADDON"]
|
13
|
-
:addon
|
14
|
-
else
|
15
|
-
:yard
|
16
|
-
end
|
17
|
-
|
18
|
-
# process directives on which content is supposed to be included in this context
|
19
|
-
node = html.children.first
|
20
|
-
loop do
|
21
|
-
break unless node
|
22
|
-
|
23
|
-
next_node = node.next
|
24
|
-
|
25
|
-
if node.comment? && (directive = MarkdownDirective.new(node)).directive?
|
26
|
-
next_node = directive.process(context) || next_node
|
27
|
-
end
|
28
|
-
node = next_node
|
29
|
-
end
|
30
|
-
|
31
|
-
html.to_s
|
32
|
-
end
|
33
|
-
|
34
|
-
def link_object(obj, title = nil, *)
|
35
|
-
::YARD::Handlers::JRuby::Base.infer_java_class(obj) if obj.is_a?(String)
|
36
|
-
obj = ::YARD::Registry.resolve(object, obj, true, true) if obj.is_a?(String)
|
37
|
-
if obj.is_a?(::YARD::CodeObjects::Java::Base) && (see = obj.docstring.tag(:see))
|
38
|
-
# link to the first see tag
|
39
|
-
return linkify(see.name, title&.to_s || see.text)
|
40
|
-
end
|
41
|
-
|
42
|
-
super
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
@@ -1,125 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "nokogiri"
|
4
|
-
|
5
|
-
module OpenHAB
|
6
|
-
module YARD
|
7
|
-
# @!visibility private
|
8
|
-
class MarkdownDirective
|
9
|
-
attr_reader :comment, :context
|
10
|
-
|
11
|
-
def initialize(comment)
|
12
|
-
@comment = comment
|
13
|
-
@lines = comment.text.split("\n")
|
14
|
-
directive_text = @lines.first.strip
|
15
|
-
|
16
|
-
@multiline = @lines.length > 1
|
17
|
-
@directive = false
|
18
|
-
return unless (match = directive_text.match(%r{^<(/)?(!)?([a-z]+)-only>$}))
|
19
|
-
|
20
|
-
@closing = match[1]
|
21
|
-
@context = match[3].to_sym
|
22
|
-
@inverted = match[2]
|
23
|
-
|
24
|
-
if closing? && multiline?
|
25
|
-
log.warn "In file `#{file}':#{line}: Multiline closing directives are not allowed (#{directive_text})."
|
26
|
-
return
|
27
|
-
end
|
28
|
-
@directive = true
|
29
|
-
end
|
30
|
-
|
31
|
-
def directive?
|
32
|
-
@directive
|
33
|
-
end
|
34
|
-
|
35
|
-
def multiline?
|
36
|
-
@multiline
|
37
|
-
end
|
38
|
-
|
39
|
-
def closing?
|
40
|
-
@closing
|
41
|
-
end
|
42
|
-
|
43
|
-
def inverted?
|
44
|
-
@inverted
|
45
|
-
end
|
46
|
-
|
47
|
-
def match?(context)
|
48
|
-
result = context == self.context
|
49
|
-
result = !result if inverted?
|
50
|
-
result
|
51
|
-
end
|
52
|
-
|
53
|
-
def closing_directive
|
54
|
-
return nil if multiline?
|
55
|
-
|
56
|
-
unless instance_variable_defined?(:@closing_directive)
|
57
|
-
next_node = @comment.next
|
58
|
-
loop do
|
59
|
-
return @closing_directive = nil unless next_node
|
60
|
-
|
61
|
-
if next_node.comment?
|
62
|
-
directive = MarkdownDirective.new(next_node)
|
63
|
-
if directive.directive? &&
|
64
|
-
directive.closing? &&
|
65
|
-
directive.context == context &&
|
66
|
-
directive.inverted? == inverted?
|
67
|
-
return @closing_directive = next_node
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
next_node = next_node.next
|
72
|
-
end
|
73
|
-
end
|
74
|
-
@closing_directive
|
75
|
-
end
|
76
|
-
|
77
|
-
def process(context)
|
78
|
-
return unless directive?
|
79
|
-
return if closing?
|
80
|
-
|
81
|
-
matched = match?(context)
|
82
|
-
|
83
|
-
# if it's a matched multiline, extract the contents and insert them directly,
|
84
|
-
# and remove the comment
|
85
|
-
if multiline?
|
86
|
-
result = comment.next
|
87
|
-
comment.before(Nokogiri::HTML5.fragment(@lines[1..].join("\n"))) if matched
|
88
|
-
comment.remove
|
89
|
-
return result
|
90
|
-
end
|
91
|
-
|
92
|
-
unless closing_directive
|
93
|
-
log.warn "In file `#{file}':#{line}: Unmatched directive <#{"!" if inverted?}#{context}-only>."
|
94
|
-
return
|
95
|
-
end
|
96
|
-
|
97
|
-
result = closing_directive.next
|
98
|
-
|
99
|
-
unless matched
|
100
|
-
# remove all nodes between the opening and closing directives
|
101
|
-
comment.next.remove while comment.next != closing_directive
|
102
|
-
end
|
103
|
-
# now remove the directives themselves
|
104
|
-
closing_directive.remove
|
105
|
-
comment.remove
|
106
|
-
result
|
107
|
-
end
|
108
|
-
|
109
|
-
def file
|
110
|
-
((defined?(@file) && @file) ? @file.filename : object.file) || "(unknown)"
|
111
|
-
end
|
112
|
-
|
113
|
-
def line
|
114
|
-
return @line if instance_variable_defined?(@line)
|
115
|
-
|
116
|
-
@line = (if defined?(@file) && @file
|
117
|
-
1
|
118
|
-
else
|
119
|
-
(object.docstring.line_range ? object.docstring.line_range.first : 1)
|
120
|
-
end) + (match ? $`.count("\n") : 0)
|
121
|
-
@line += comment.line - 1
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|
@@ -1,99 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "nokogiri"
|
4
|
-
|
5
|
-
module OpenHAB
|
6
|
-
module YARD
|
7
|
-
# @!visibility private
|
8
|
-
module MarkdownHelper
|
9
|
-
# @group Linking Objects and URLs
|
10
|
-
|
11
|
-
def diskfile
|
12
|
-
preprocess(super)
|
13
|
-
end
|
14
|
-
|
15
|
-
# mostly copied from HTMLHelper
|
16
|
-
def resolve_links(text)
|
17
|
-
blockquotes = false
|
18
|
-
text.gsub(%r{(```)|(\\|!)?\{(?!\})(\S+?)(?:\s([^\}]*?\S))?\}(?=[\W<]|.+</|$)}m) do |str|
|
19
|
-
blockquote = $1
|
20
|
-
escape = $2
|
21
|
-
name = $3
|
22
|
-
title = $4
|
23
|
-
match = $&
|
24
|
-
if blockquote
|
25
|
-
blockquotes = !blockquotes
|
26
|
-
next str
|
27
|
-
end
|
28
|
-
next str if blockquotes
|
29
|
-
|
30
|
-
next(match[1..-1]) if escape
|
31
|
-
|
32
|
-
next(match) if name[0, 1] == '|'
|
33
|
-
|
34
|
-
if object.is_a?(String)
|
35
|
-
object
|
36
|
-
else
|
37
|
-
link = linkify(name, title)
|
38
|
-
if (link == name || link == title) && (name + ' ' + link !~ /\A<a\s.*>/)
|
39
|
-
match = /(.+)?(\{#{Regexp.quote name}(?:\s.*?)?\})(.+)?/.match(text)
|
40
|
-
file = (defined?(@file) && @file ? @file.filename : object.file) || '(unknown)'
|
41
|
-
line = (defined?(@file) && @file ? 1 : (object.docstring.line_range ? object.docstring.line_range.first : 1)) + (match ? $`.count("\n") : 0)
|
42
|
-
log.warn "In file `#{file}':#{line}: Cannot resolve link to #{name} from text" + (match ? ":" : ".") +
|
43
|
-
"\n\t" + (match[1] ? '...' : '') + match[2].delete("\n") + (match[3] ? '...' : '') if match
|
44
|
-
end
|
45
|
-
|
46
|
-
link
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
# mostly copied from HTMLHelper
|
52
|
-
def link_object(obj, title = nil, anchor = nil, relative = true)
|
53
|
-
return title if obj.nil?
|
54
|
-
|
55
|
-
obj = Registry.resolve(object, obj, true, true) if obj.is_a?(String)
|
56
|
-
|
57
|
-
was_const = false
|
58
|
-
# Re-link references to constants that are aliases to their target. But keep
|
59
|
-
# their current title.
|
60
|
-
while obj.is_a?(CodeObjects::ConstantObject) && obj.target
|
61
|
-
title ||= h(object.relative_path(obj)).to_s
|
62
|
-
was_const = true
|
63
|
-
obj = obj.target
|
64
|
-
end
|
65
|
-
return link_object(obj, title, anchor, relative) if was_const
|
66
|
-
|
67
|
-
title = if title
|
68
|
-
title.to_s
|
69
|
-
elsif object.is_a?(CodeObjects::Base)
|
70
|
-
# Check if we're linking to a class method in the current
|
71
|
-
# object. If we are, create a title in the format of
|
72
|
-
# "CurrentClass.method_name"
|
73
|
-
if obj.is_a?(CodeObjects::MethodObject) && obj.scope == :class && obj.parent == object
|
74
|
-
h([object.name, obj.sep, obj.name].join)
|
75
|
-
elsif obj.title != obj.path
|
76
|
-
h(obj.title)
|
77
|
-
else
|
78
|
-
h(object.relative_path(obj))
|
79
|
-
end
|
80
|
-
else
|
81
|
-
h(obj.title)
|
82
|
-
end
|
83
|
-
return title unless serializer
|
84
|
-
return title if obj.is_a?(CodeObjects::Proxy)
|
85
|
-
|
86
|
-
link = url_for(obj, anchor, relative)
|
87
|
-
link ? link_url(link, title, title: h("#{obj.title} (#{obj.type})")) : title
|
88
|
-
rescue Parser::UndocumentableError
|
89
|
-
log.warn "The namespace of link #{obj.inspect} is a constant or invalid."
|
90
|
-
title || obj.to_s
|
91
|
-
end
|
92
|
-
|
93
|
-
def link_url(url, title = nil, _params = nil)
|
94
|
-
title ||= url
|
95
|
-
"[#{title}](#{url})"
|
96
|
-
end
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|