slim_lint 0.24.0 → 0.25.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e50e0e7ca03f55bd42e692cc7875adab1d454bf9b2984f97e1b7140677bbc700
4
- data.tar.gz: b5d93260c2f354cedac16577e8692c5202eb685e7532b511edfefd196a086e65
3
+ metadata.gz: 58c99ab50012a0f3475e6518e69bade743b55e6ed5eb4f5dd25a98ea1b7a617e
4
+ data.tar.gz: 4593348af814f4bce1bd240d4982eec2acd9d4c7bbda5f5ccc231a3a51b8c148
5
5
  SHA512:
6
- metadata.gz: 3a64584b6cda49797435f8e996a9ef448f75ab2f2956b2f6d94810d4a654178a7e35949a031af5d5bf543657916aaae9368a68e66942a02fd0619cab63c73521
7
- data.tar.gz: 7846bf8dc4aef4a78e4406b9c661ac44823297f66c59cbd7d3b714cf51efa30b424350e0f017d1ebabb9348b8ae1569f302330efc66613cd07f70b1025929087
6
+ metadata.gz: 53ea008e7e03d7261af22c33e098be489096299117b9ec103406382568af8b8b3c10e0a77a3e97e9848c88a57d04d2f5a6b7998b48555d7ea205ceb136f95cdb
7
+ data.tar.gz: 1e5e98f7d7e6eacc805a85451b8428f2f746b91b5b3433ce5262779d6bd9285b6db00e463c3d1b79912e9b93b677b5f12f0bf0e50613f284b8b482732fc7e552
@@ -72,7 +72,7 @@ module SlimLint
72
72
  # @param path [String]
73
73
  # @return [String]
74
74
  def normalize_path(path)
75
- path.start_with?(".#{File::SEPARATOR}") ? path[2..-1] : path
75
+ path.start_with?(".#{File::SEPARATOR}") ? path[2..] : path
76
76
  end
77
77
 
78
78
  # Whether the given file should be treated as a Slim file.
@@ -9,8 +9,14 @@ module SlimLint
9
9
 
10
10
  on [:html, :tag, anything, [],
11
11
  [:slim, :output, anything, capture(:ruby, anything)]] do |sexp|
12
- # Fetch original Slim code that contains an element with a control statement.
13
- line = document.source_lines[sexp.line - 1]
12
+ # Process original slim code so that multi-line attributes become single line.
13
+ # And store the correction line count
14
+ source = merge_multiline_attributes(document.source_lines)
15
+
16
+ # Fetch processed Slim code that contains an element with a control statement.
17
+ line = source[sexp.line - 1][:line]
18
+ # Apply correction to the line count.
19
+ sexp.line += source[sexp.line - 1][:line_count]
14
20
 
15
21
  # Remove any Ruby code, because our regexp below must not match inside Ruby.
16
22
  ruby = captures[:ruby]
@@ -20,5 +26,29 @@ module SlimLint
20
26
 
21
27
  report_lint(sexp, MESSAGE)
22
28
  end
29
+
30
+ private
31
+
32
+ def merge_multiline_attributes(source_lines)
33
+ result = []
34
+ memo = ''
35
+ correction_line_count = 0
36
+
37
+ source_lines.each do |line|
38
+ memo += line.chomp('\\')
39
+
40
+ # Lines ending in a backslash are concatenated with the next line
41
+ # And count the number of lines to correct the sexp line count.
42
+ if line.match?(/\\$/)
43
+ correction_line_count += 1
44
+ next
45
+ end
46
+
47
+ # Add merged rows and correction line count to the result and reset the memo
48
+ result << { line: memo, line_count: correction_line_count }
49
+ memo = ''
50
+ end
51
+ result
52
+ end
23
53
  end
24
54
  end
@@ -27,11 +27,9 @@ module SlimLint
27
27
  # @return [Array<Class>]
28
28
  def extract_linters_from(linter_names)
29
29
  linter_names.map do |linter_name|
30
- begin
31
- SlimLint::Linter.const_get(linter_name)
32
- rescue NameError
33
- raise NoSuchLinter, "Linter #{linter_name} does not exist"
34
- end
30
+ SlimLint::Linter.const_get(linter_name)
31
+ rescue NameError
32
+ raise NoSuchLinter, "Linter #{linter_name} does not exist"
35
33
  end
36
34
  end
37
35
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Defines the gem version.
4
4
  module SlimLint
5
- VERSION = '0.24.0'
5
+ VERSION = '0.25.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.24.0
4
+ version: 0.25.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shane da Silva
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-02 00:00:00.000000000 Z
11
+ date: 2024-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -50,20 +50,6 @@ dependencies:
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
52
  version: '6.0'
53
- - !ruby/object:Gem::Dependency
54
- name: pry
55
- requirement: !ruby/object:Gem::Requirement
56
- requirements:
57
- - - "~>"
58
- - !ruby/object:Gem::Version
59
- version: '0.13'
60
- type: :development
61
- prerelease: false
62
- version_requirements: !ruby/object:Gem::Requirement
63
- requirements:
64
- - - "~>"
65
- - !ruby/object:Gem::Version
66
- version: '0.13'
67
53
  - !ruby/object:Gem::Dependency
68
54
  name: rspec
69
55
  requirement: !ruby/object:Gem::Requirement
@@ -171,14 +157,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
171
157
  requirements:
172
158
  - - ">="
173
159
  - !ruby/object:Gem::Version
174
- version: 2.4.0
160
+ version: '3.0'
175
161
  required_rubygems_version: !ruby/object:Gem::Requirement
176
162
  requirements:
177
163
  - - ">="
178
164
  - !ruby/object:Gem::Version
179
165
  version: '0'
180
166
  requirements: []
181
- rubygems_version: 3.1.6
167
+ rubygems_version: 3.0.3.1
182
168
  signing_key:
183
169
  specification_version: 4
184
170
  summary: Slim template linting tool