erb_lint 0.0.7 → 0.0.8
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/erb_lint.rb +1 -0
- data/lib/erb_lint/file_loader.rb +28 -0
- data/lib/erb_lint/linter.rb +2 -2
- data/lib/erb_lint/linters/deprecated_classes.rb +3 -1
- data/lib/erb_lint/linters/erb_safety.rb +16 -2
- data/lib/erb_lint/linters/final_newline.rb +2 -1
- data/lib/erb_lint/linters/rubocop.rb +2 -1
- data/lib/erb_lint/runner.rb +3 -2
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c63d51b88111aebeec5f4bc85009a499d61d750
|
4
|
+
data.tar.gz: b389e7f7f6aca2251369ae7491b9a58847a8db0e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5951a1d7466088a8298801fb6e41a00069417cd33a977cb5b2a8403fe1611f349162b710887b073410f23fa66f03f67ccf683a678f3068e61cd7bb22b79cfa5f
|
7
|
+
data.tar.gz: 1c505e1eb402fe827c8d0f542d8c8eba8efeeed9a5f973f21bb12a83ae698ea4f9eb77f6ed193d8a58c6e006eded532cd06544c610a9ea01846bd010e8e03260
|
data/lib/erb_lint.rb
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ERBLint
|
4
|
+
# Loads file from disk
|
5
|
+
class FileLoader
|
6
|
+
attr_reader :base_path
|
7
|
+
|
8
|
+
def initialize(base_path)
|
9
|
+
@base_path = base_path
|
10
|
+
end
|
11
|
+
|
12
|
+
def yaml(filename)
|
13
|
+
YAML.safe_load(read_content(filename), [Regexp], [], false, filename) || {}
|
14
|
+
rescue Psych::SyntaxError
|
15
|
+
{}
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def join(filename)
|
21
|
+
File.join(base_path, filename)
|
22
|
+
end
|
23
|
+
|
24
|
+
def read_content(filename)
|
25
|
+
File.read(join(filename))
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/erb_lint/linter.rb
CHANGED
@@ -20,8 +20,8 @@ module ERBLint
|
|
20
20
|
end
|
21
21
|
|
22
22
|
# Must be implemented by the concrete inheriting class.
|
23
|
-
def initialize(_config)
|
24
|
-
|
23
|
+
def initialize(file_loader, _config)
|
24
|
+
@file_loader = file_loader
|
25
25
|
end
|
26
26
|
|
27
27
|
def lint_file(file_content)
|
@@ -8,7 +8,9 @@ module ERBLint
|
|
8
8
|
class DeprecatedClasses < Linter
|
9
9
|
include LinterRegistry
|
10
10
|
|
11
|
-
def initialize(config)
|
11
|
+
def initialize(file_loader, config)
|
12
|
+
super
|
13
|
+
|
12
14
|
@deprecated_ruleset = []
|
13
15
|
config.fetch('rule_set', []).each do |rule|
|
14
16
|
suggestion = rule.fetch('suggestion', '')
|
@@ -10,12 +10,14 @@ module ERBLint
|
|
10
10
|
include LinterRegistry
|
11
11
|
include BetterHtml::TestHelper::SafeErbTester
|
12
12
|
|
13
|
-
def initialize(config)
|
13
|
+
def initialize(file_loader, config)
|
14
|
+
super
|
15
|
+
@config_filename = config['better-html-config']
|
14
16
|
end
|
15
17
|
|
16
18
|
def lint_file(file_content)
|
17
19
|
errors = []
|
18
|
-
tester = Tester.new(file_content)
|
20
|
+
tester = Tester.new(file_content, config: better_html_config)
|
19
21
|
tester.errors.each do |error|
|
20
22
|
errors << format_error(error)
|
21
23
|
end
|
@@ -24,6 +26,18 @@ module ERBLint
|
|
24
26
|
|
25
27
|
private
|
26
28
|
|
29
|
+
def better_html_config
|
30
|
+
@better_html_config ||= begin
|
31
|
+
config_hash =
|
32
|
+
if @config_filename.nil?
|
33
|
+
{}
|
34
|
+
else
|
35
|
+
@file_loader.yaml(@config_filename)
|
36
|
+
end
|
37
|
+
BetterHtml::Config.new(**config_hash)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
27
41
|
def format_error(error)
|
28
42
|
{
|
29
43
|
line: error.location.line,
|
@@ -13,7 +13,8 @@ module ERBLint
|
|
13
13
|
# copied from Rails: action_view/template/handlers/erb/erubi.rb
|
14
14
|
BLOCK_EXPR = /\s*((\s+|\))do|\{)(\s*\|[^|]*\|)?\s*\Z/
|
15
15
|
|
16
|
-
def initialize(config_hash)
|
16
|
+
def initialize(file_loader, config_hash)
|
17
|
+
super
|
17
18
|
@enabled_cops = config_hash.delete('only')
|
18
19
|
tempfile_from('.erblint-rubocop', config_hash.except('enabled').to_yaml) do |tempfile|
|
19
20
|
custom_config = RuboCop::ConfigLoader.load_file(tempfile.path)
|
data/lib/erb_lint/runner.rb
CHANGED
@@ -3,14 +3,15 @@
|
|
3
3
|
module ERBLint
|
4
4
|
# Runs all enabled linters against an html.erb file.
|
5
5
|
class Runner
|
6
|
-
def initialize(config = {})
|
6
|
+
def initialize(file_loader, config = {})
|
7
|
+
@file_loader = file_loader
|
7
8
|
@config = default_config.merge(config || {})
|
8
9
|
|
9
10
|
LinterRegistry.load_custom_linters
|
10
11
|
@linters = LinterRegistry.linters.select { |linter_class| linter_enabled?(linter_class) }
|
11
12
|
@linters.map! do |linter_class|
|
12
13
|
linter_config = @config.dig('linters', linter_class.simple_name)
|
13
|
-
linter_class.new(linter_config)
|
14
|
+
linter_class.new(@file_loader, linter_config)
|
14
15
|
end
|
15
16
|
end
|
16
17
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: erb_lint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Chan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-11-
|
11
|
+
date: 2017-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: better_html
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.0.
|
19
|
+
version: 0.0.10
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.0.
|
26
|
+
version: 0.0.10
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: html_tokenizer
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -88,6 +88,7 @@ extensions: []
|
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
90
|
- lib/erb_lint.rb
|
91
|
+
- lib/erb_lint/file_loader.rb
|
91
92
|
- lib/erb_lint/linter.rb
|
92
93
|
- lib/erb_lint/linter_registry.rb
|
93
94
|
- lib/erb_lint/linters/deprecated_classes.rb
|