slim_lint 0.26.0 → 0.27.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
  SHA256:
3
- metadata.gz: 007f6af5a15bd9858e04011b2fa0b604bc523148929b96852f44661b95fb1f66
4
- data.tar.gz: 156ad192dc47014b863c9be9840f2280ee3174aa98bb96588b34017ffa7d470e
3
+ metadata.gz: b4318d25d9325fb30a43a2db83a14aca0002c83960dc7edb0e8a5c87eaa59e64
4
+ data.tar.gz: 7ae359e3575cdae4293216064fc6a4bc0a07bd9d6ebb5b5688949634ae1ccbf1
5
5
  SHA512:
6
- metadata.gz: 30e9a1af1ba6b00cdc64037fa862eb2b40789e81f6d846183d84755a37396de87a7606ef30b8c11955ca3dc41fe691a157b5b2e75b737b73a03dfaecde8279c3
7
- data.tar.gz: 2664127ced343842a71564c9be8b146f39a5d0374c48bb4c6f41fe764c021507542a81ddc24c9df3b12fab79d62408c2971179f9b57b02e5781846b31922c63d
6
+ metadata.gz: 6a03e56f04fefa1fc83f95356bcb2bbe5b13db122140aa34afda23809cfd1af6469bed95c681436f4ec7230deebf3b7f932cbbff21423eba88b61bd107006029
7
+ data.tar.gz: d59790c900df3af0486a8c4b636bf970ef9b35932e67342b3d9fb3b8a8dee779016fb0ab8d65ebcd1f9fadb26fa14149da771499159686bc665b0a56608b1774
data/config/default.yml CHANGED
@@ -32,6 +32,12 @@ linters:
32
32
  enabled: false
33
33
  max: 300
34
34
 
35
+ InstanceVariables:
36
+ enabled: false
37
+ include:
38
+ # Include only partial templates by default
39
+ - app/views/**/_*.html.slim
40
+
35
41
  LineLength:
36
42
  enabled: true
37
43
  max: 80
@@ -83,6 +89,12 @@ linters:
83
89
  - Style/WhileUntilDo
84
90
  - Style/WhileUntilModifier
85
91
 
92
+ StrictLocalsMissing:
93
+ enabled: false
94
+ include:
95
+ # Include only Rails partial templates by default
96
+ - app/views/**/_*.html.slim
97
+
86
98
  Tab:
87
99
  enabled: true
88
100
 
@@ -12,7 +12,7 @@ module SlimLint
12
12
  dummy_node = Struct.new(:line)
13
13
  document.source_lines.each_with_index do |line, index|
14
14
  forbidden_engines.each do |forbidden_engine|
15
- next unless line =~ /^#{forbidden_engine}.*:\s*$/
15
+ next unless line =~ /^\s*#{forbidden_engine}.*:\s*$/
16
16
 
17
17
  report_lint(dummy_node.new(index + 1), MESSAGE % forbidden_engine)
18
18
  end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SlimLint
4
+ # Searches for instance variables in partial or other templates.
5
+ class Linter::InstanceVariables < Linter
6
+ include LinterRegistry
7
+
8
+ on_start do |_sexp|
9
+ processed_sexp = SlimLint::RubyExtractEngine.new.call(document.source)
10
+
11
+ extractor = SlimLint::RubyExtractor.new
12
+ extracted_source = extractor.extract(processed_sexp)
13
+ next if extracted_source.source.empty?
14
+
15
+ parsed_ruby = parse_ruby(extracted_source.source)
16
+ next unless parsed_ruby
17
+
18
+ report_instance_variables(parsed_ruby, extracted_source.source_map)
19
+ end
20
+
21
+ private
22
+
23
+ def report_instance_variables(parsed_ruby, source_map)
24
+ parsed_ruby.each_node do |node|
25
+ next unless node.ivar_type?
26
+
27
+ dummy_node = Struct.new(:line)
28
+ report_lint(dummy_node.new(source_map[node.loc.line]),
29
+ 'Avoid instance variables in the configured ' \
30
+ "view templates (found `#{node.source}`)")
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SlimLint
4
+ # Reports on missing strict locals magic line in Slim templates.
5
+ class Linter::StrictLocalsMissing < Linter
6
+ include LinterRegistry
7
+
8
+ on_start do |_sexp|
9
+ unless document.source =~ %r{/#\s+locals:\s+\(.*\)}
10
+ dummy_node = Struct.new(:line)
11
+ report_lint(dummy_node.new(1), 'Strict locals magic line is missing')
12
+ end
13
+ end
14
+ end
15
+ end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Defines the gem version.
4
4
  module SlimLint
5
- VERSION = '0.26.0'
5
+ VERSION = '0.27.0'
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slim_lint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.26.0
4
+ version: 0.27.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shane da Silva
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-16 00:00:00.000000000 Z
11
+ date: 2024-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -114,9 +114,11 @@ files:
114
114
  - lib/slim_lint/linter/empty_control_statement.rb
115
115
  - lib/slim_lint/linter/empty_lines.rb
116
116
  - lib/slim_lint/linter/file_length.rb
117
+ - lib/slim_lint/linter/instance_variables.rb
117
118
  - lib/slim_lint/linter/line_length.rb
118
119
  - lib/slim_lint/linter/redundant_div.rb
119
120
  - lib/slim_lint/linter/rubocop.rb
121
+ - lib/slim_lint/linter/strict_locals_missing.rb
120
122
  - lib/slim_lint/linter/tab.rb
121
123
  - lib/slim_lint/linter/tag_case.rb
122
124
  - lib/slim_lint/linter/trailing_blank_lines.rb
@@ -149,7 +151,7 @@ homepage: https://github.com/sds/slim-lint
149
151
  licenses:
150
152
  - MIT
151
153
  metadata: {}
152
- post_install_message:
154
+ post_install_message:
153
155
  rdoc_options: []
154
156
  require_paths:
155
157
  - lib
@@ -164,8 +166,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
164
166
  - !ruby/object:Gem::Version
165
167
  version: '0'
166
168
  requirements: []
167
- rubygems_version: 3.4.10
168
- signing_key:
169
+ rubygems_version: 3.0.3.1
170
+ signing_key:
169
171
  specification_version: 4
170
172
  summary: Slim template linting tool
171
173
  test_files: []