roku_builder 4.14.1 → 4.15.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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 62fc3eeb8342b7b051b3fb0c96ca465328da1132
|
4
|
+
data.tar.gz: '0739f417d2fdd6cfc2d3ab4755e6cef51bfd70a1'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2a8822179c1be73aa66fa86a16006e9b9085e311834c721aabe454552e7e8e610439c89566f626d6ec54f678198769d48f3d6422c8a1e88a2f2864fe062685f8
|
7
|
+
data.tar.gz: 74bcb13af4721aa3bb22312b37c6820249a79f03fdbb5445a25d78630766516c19e4e69e7eaeff976506191c8c13ead65d5637ecac6e89813b2fa9f1de8c09f6
|
data/CHANGELOG
CHANGED
@@ -33,6 +33,7 @@ module RokuBuilder
|
|
33
33
|
analyzer_config = get_config("inspector_config.json")
|
34
34
|
performance_config = get_config("performance_config.json")
|
35
35
|
linter_config = get_config(".roku_builder_linter.json", true)
|
36
|
+
linter_config ||= {}
|
36
37
|
@inspector_config = analyzer_config[:inspectors]
|
37
38
|
loader = Loader.new(config: @config)
|
38
39
|
Dir.mktmpdir do |dir|
|
@@ -49,8 +50,8 @@ module RokuBuilder
|
|
49
50
|
if File.file?(file_path) and file_path.end_with?(".brs", ".xml")
|
50
51
|
line_inspector_config = analyzer_config[:lineInspectors]
|
51
52
|
line_inspector_config += performance_config
|
52
|
-
line_inspector_config += linter_config if linter_config
|
53
|
-
line_inspector = LineInspector.new(config: @config, raf: raf_inspector, inspector_config: line_inspector_config)
|
53
|
+
line_inspector_config += linter_config[:rules] if linter_config[:rules]
|
54
|
+
line_inspector = LineInspector.new(config: @config, raf: raf_inspector, inspector_config: line_inspector_config, indent_config: linter_config[:indentation])
|
54
55
|
@warnings.concat(line_inspector.run(file_path))
|
55
56
|
end
|
56
57
|
if file_path.end_with?("__MACOSX")
|
@@ -0,0 +1,83 @@
|
|
1
|
+
# ********** Copyright Viacom, Inc. Apache 2.0 **********
|
2
|
+
|
3
|
+
module RokuBuilder
|
4
|
+
class IndentationInspector
|
5
|
+
attr_reader :warnings
|
6
|
+
def initialize(rules:, path:)
|
7
|
+
@character = get_character(rules[:character])
|
8
|
+
@count = rules[:count].to_i
|
9
|
+
@path = path
|
10
|
+
@type = File.extname(path)[1..-1].to_sym
|
11
|
+
@warnings = []
|
12
|
+
@prev_line = nil
|
13
|
+
@ind = 0
|
14
|
+
end
|
15
|
+
|
16
|
+
def check_line(line:, number:)
|
17
|
+
#byebug if number == 191 and @path.ends_with?("EpisodeGuide.animation.brs")
|
18
|
+
set_indentation(line: line)
|
19
|
+
regexp = /^#{@character}{#{@ind}}[^#{@character}]/
|
20
|
+
unless line =~ regexp or line == "\n"
|
21
|
+
add_warning(line: number)
|
22
|
+
end
|
23
|
+
@prev_line = line
|
24
|
+
end
|
25
|
+
|
26
|
+
def set_indentation(line:)
|
27
|
+
case @type
|
28
|
+
when :xml
|
29
|
+
if @prev_line and @prev_line =~ /<[^?!\/][^>]*[^\/]>/
|
30
|
+
unless @prev_line =~ /<([^>\/]*)>.*<\/\1*>/
|
31
|
+
@ind += @count
|
32
|
+
end
|
33
|
+
end
|
34
|
+
if line =~ /<\/[^>]*>/
|
35
|
+
unless line =~ /<([^>\/]*)>.*<\/\1*>/
|
36
|
+
@ind -= @count
|
37
|
+
end
|
38
|
+
end
|
39
|
+
when :brs
|
40
|
+
if @prev_line
|
41
|
+
if @prev_line =~ /[\{\[\(:]$/
|
42
|
+
@ind += @count
|
43
|
+
elsif @prev_line =~ /^\s*\bfunction\b|^\s*\bsub\b/i
|
44
|
+
@ind += @count
|
45
|
+
elsif @prev_line =~ /^\s*#?if\b|^\s*#?else\b/i
|
46
|
+
unless @prev_line =~ /\bthen\b[ \t ]*[^' \r\n']+.*$/i or @prev_line =~ /\breturn\b/i
|
47
|
+
@ind += @count
|
48
|
+
end
|
49
|
+
elsif @prev_line =~ /^\s*\bfor\b|^\s*\bwhile\b/i
|
50
|
+
@ind += @count
|
51
|
+
end
|
52
|
+
end
|
53
|
+
if line =~ /^\s*[\}\]\)]/
|
54
|
+
@ind -= @count
|
55
|
+
elsif line =~ /^\s*\bfunction\b|^\s*\bsub\b/i
|
56
|
+
@ind -= 0
|
57
|
+
elsif line =~ /^\s*#?end\b|^\s*#?endif\b|^\s*endfor\b|^\s*\bnext\b/i
|
58
|
+
@ind -= @count
|
59
|
+
elsif line =~ /^\s*#?else\b|^\s*elseif\b/i
|
60
|
+
@ind -= @count
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
private
|
66
|
+
|
67
|
+
def get_character(character)
|
68
|
+
case character
|
69
|
+
when "tab"
|
70
|
+
"\t"
|
71
|
+
when "space"
|
72
|
+
" "
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def add_warning(line:)
|
77
|
+
@warnings.push({severity: "warning", message: 'Incorrect indentation'})
|
78
|
+
@warnings.last[:path] = @path
|
79
|
+
@warnings.last[:line] = line
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
@@ -3,18 +3,20 @@
|
|
3
3
|
module RokuBuilder
|
4
4
|
|
5
5
|
class LineInspector
|
6
|
-
def initialize(config:, raf:, inspector_config:)
|
6
|
+
def initialize(config:, raf:, inspector_config:, indent_config:)
|
7
7
|
@config = config
|
8
8
|
@raf_inspector = raf
|
9
9
|
@inspector_config = inspector_config
|
10
|
+
@indent_config = indent_config
|
10
11
|
end
|
11
12
|
|
12
13
|
def run(file_path)
|
13
14
|
@warnings = []
|
14
15
|
File.open(file_path) do |file|
|
15
|
-
line_number = 0
|
16
16
|
in_xml_comment = false
|
17
|
-
|
17
|
+
indent_inspector = IndentationInspector.new(rules: @indent_config, path: file_path) if @indent_config
|
18
|
+
file.readlines.each_with_index do |line, line_number|
|
19
|
+
indent_inspector.check_line(line: line, number: line_number) if indent_inspector
|
18
20
|
full_line = line.dup
|
19
21
|
line = line.partition("'").first if file_path.end_with?(".brs")
|
20
22
|
if file_path.end_with?(".xml")
|
@@ -42,8 +44,8 @@ module RokuBuilder
|
|
42
44
|
end
|
43
45
|
end
|
44
46
|
@raf_inspector.inspect_line(line: line, file: file_path, line_number: line_number)
|
45
|
-
line_number += 1
|
46
47
|
end
|
48
|
+
@warnings += indent_inspector.warnings if indent_inspector
|
47
49
|
end
|
48
50
|
@warnings
|
49
51
|
end
|
data/lib/roku_builder/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roku_builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- greeneca
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-01-
|
11
|
+
date: 2019-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyzip
|
@@ -486,6 +486,7 @@ files:
|
|
486
486
|
- lib/roku_builder/plugin.rb
|
487
487
|
- lib/roku_builder/plugins/analyzer.rb
|
488
488
|
- lib/roku_builder/plugins/core.rb
|
489
|
+
- lib/roku_builder/plugins/indentation_inspector.rb
|
489
490
|
- lib/roku_builder/plugins/inspector.rb
|
490
491
|
- lib/roku_builder/plugins/inspector_config.json
|
491
492
|
- lib/roku_builder/plugins/line_inspector.rb
|