haml_lint 0.57.0 → 0.59.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 +4 -4
- data/lib/haml_lint/adapter.rb +3 -3
- data/lib/haml_lint/cli.rb +2 -2
- data/lib/haml_lint/document.rb +1 -1
- data/lib/haml_lint/extensions/haml_util_unescape_interpolation_tracking.rb +1 -1
- data/lib/haml_lint/linter/empty_script.rb +1 -1
- data/lib/haml_lint/linter/id_names.rb +1 -1
- data/lib/haml_lint/linter/indentation.rb +1 -1
- data/lib/haml_lint/linter/leading_comment_space.rb +1 -1
- data/lib/haml_lint/linter/rubocop.rb +1 -1
- data/lib/haml_lint/linter/space_inside_hash_attributes.rb +2 -2
- data/lib/haml_lint/linter/tag_name.rb +1 -1
- data/lib/haml_lint/linter/trailing_whitespace.rb +1 -1
- data/lib/haml_lint/linter/unnecessary_string_output.rb +1 -1
- data/lib/haml_lint/linter.rb +2 -2
- data/lib/haml_lint/rake_task.rb +3 -2
- data/lib/haml_lint/reporter/default_reporter.rb +1 -1
- data/lib/haml_lint/reporter/disabled_config_reporter.rb +1 -1
- data/lib/haml_lint/reporter/json_reporter.rb +1 -1
- data/lib/haml_lint/reporter/progress_reporter.rb +2 -1
- data/lib/haml_lint/reporter/utils.rb +2 -2
- data/lib/haml_lint/reporter.rb +1 -1
- data/lib/haml_lint/ruby_extraction/base_chunk.rb +1 -1
- data/lib/haml_lint/ruby_extraction/chunk_extractor.rb +8 -4
- data/lib/haml_lint/ruby_extraction/non_ruby_filter_chunk.rb +1 -1
- data/lib/haml_lint/ruby_extraction/ruby_filter_chunk.rb +1 -1
- data/lib/haml_lint/ruby_extraction/script_chunk.rb +1 -1
- data/lib/haml_lint/runner.rb +1 -0
- data/lib/haml_lint/spec/shared_rubocop_autocorrect_context.rb +1 -1
- data/lib/haml_lint/spec.rb +4 -4
- data/lib/haml_lint/tree/haml_comment_node.rb +1 -1
- data/lib/haml_lint/tree/node.rb +1 -1
- data/lib/haml_lint/tree/root_node.rb +2 -2
- data/lib/haml_lint/tree/script_node.rb +1 -1
- data/lib/haml_lint/utils.rb +1 -1
- data/lib/haml_lint/version.rb +1 -1
- data/lib/haml_lint.rb +23 -23
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 15d3baf951722e2a699bc903a0848affa4a05b38939c67554e0410dfb9b817bb
|
4
|
+
data.tar.gz: d143ca9d7330ff3f4d7e32fa306be4a520258627f34b0ddd7536964ebdd45c05
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85296a42fbb76f5033401ecd2825efafe5efad954ec2e312af2133a468afe1b92f1c95269a571cbfe9cc9366ecc244a257d7e3e4b756911c921820f7d181beb1
|
7
|
+
data.tar.gz: 90309db3dbfa97deb00561fd6479d82e14519fe3ba59bcc80da456731ab3c830afe389bd958df382748b3d0906fdde4a3c7abe110b99151d1be797e4e1cde63f
|
data/lib/haml_lint/adapter.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
require_relative 'adapter/haml_5'
|
4
|
+
require_relative 'adapter/haml_6'
|
5
|
+
require_relative 'exceptions'
|
6
6
|
|
7
7
|
module HamlLint
|
8
8
|
# Determines the adapter to use for the current Haml version
|
data/lib/haml_lint/cli.rb
CHANGED
data/lib/haml_lint/document.rb
CHANGED
@@ -14,7 +14,7 @@ module Haml::Util
|
|
14
14
|
Thread.current[:haml_lint_unescape_interpolation_to_original_cache] ||= {}
|
15
15
|
end
|
16
16
|
|
17
|
-
# As soon as a HamlLint::Document has finished processing a HAML
|
17
|
+
# As soon as a HamlLint::Document has finished processing a HAML source, this gets called to
|
18
18
|
# get a copy of this cache and clear up for the next HAML processing
|
19
19
|
def self.unescape_interpolation_to_original_cache_take_and_wipe
|
20
20
|
value = unescape_interpolation_to_original_cache.dup
|
@@ -24,7 +24,7 @@ module HamlLint
|
|
24
24
|
|
25
25
|
style = config['style'] || 'lisp_case'
|
26
26
|
matcher = STYLES[style]
|
27
|
-
record_lint(node, "`id` attribute must be in #{STYLIZED_NAMES[style]}") unless id
|
27
|
+
record_lint(node, "`id` attribute must be in #{STYLIZED_NAMES[style]}") unless id&.match?(matcher)
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
@@ -30,7 +30,7 @@ module HamlLint
|
|
30
30
|
dummy_node = Struct.new(:line)
|
31
31
|
|
32
32
|
document.source_lines.each_with_index do |line, index|
|
33
|
-
next if line
|
33
|
+
next if line&.match?(regex)
|
34
34
|
|
35
35
|
unless root.node_for_line(index).disabled?(self)
|
36
36
|
record_lint dummy_node.new(index + 1), "Line contains #{wrong_characters} in indentation"
|
@@ -8,7 +8,7 @@ module HamlLint
|
|
8
8
|
def visit_haml_comment(node)
|
9
9
|
# Skip if the node spans multiple lines starting on the second line,
|
10
10
|
# or starts with a space
|
11
|
-
return if
|
11
|
+
return if /\A#*(\s*|\s+\S.*)$/.match?(node.text)
|
12
12
|
|
13
13
|
record_lint(node, 'Comment should have a space after the `#`')
|
14
14
|
end
|
@@ -117,7 +117,7 @@ module HamlLint
|
|
117
117
|
# so the lints will be recorded then.
|
118
118
|
@lints = []
|
119
119
|
|
120
|
-
msg = "Corrections couldn't be
|
120
|
+
msg = "Corrections couldn't be transferred: #{e.message} - Consider linting the file " \
|
121
121
|
'without auto-correct and doing the changes manually.'
|
122
122
|
if ENV['HAML_LINT_DEBUG'] == 'true'
|
123
123
|
msg = "#{msg} DEBUG: Rubocop corrected Ruby code follows:\n#{new_ruby_code}\n------"
|
@@ -27,8 +27,8 @@ module HamlLint
|
|
27
27
|
style = STYLE[config['style'] == 'no_space' ? 'no_space' : 'space']
|
28
28
|
source = node.hash_attributes_source
|
29
29
|
|
30
|
-
record_lint(node, style[:start_message]) unless source
|
31
|
-
record_lint(node, style[:end_message]) unless source
|
30
|
+
record_lint(node, style[:start_message]) unless source&.match?(style[:start_regex])
|
31
|
+
record_lint(node, style[:end_message]) unless source&.match?(style[:end_regex])
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
@@ -22,7 +22,7 @@ module HamlLint
|
|
22
22
|
def visit_script(node)
|
23
23
|
# Some script nodes created by the HAML parser aren't actually script
|
24
24
|
# nodes declared via the `=` marker. Check for it.
|
25
|
-
return
|
25
|
+
return unless /\A\s*=/.match?(node.source_code)
|
26
26
|
|
27
27
|
if outputs_string_literal?(node)
|
28
28
|
record_lint(node, MESSAGE)
|
data/lib/haml_lint/linter.rb
CHANGED
@@ -37,7 +37,7 @@ module HamlLint
|
|
37
37
|
:error
|
38
38
|
)
|
39
39
|
rescue StandardError => e
|
40
|
-
msg = "Couldn't process the file"
|
40
|
+
msg = +"Couldn't process the file"
|
41
41
|
if @autocorrect
|
42
42
|
# Those lints related to auto-correction were not saved, so don't display them
|
43
43
|
@lints = []
|
@@ -231,7 +231,7 @@ module HamlLint
|
|
231
231
|
# excess whitespace
|
232
232
|
@document.source_lines[(tag_node.line - 1)...(following_node_line(tag_node) - 1)]
|
233
233
|
.map do |line|
|
234
|
-
line.strip.
|
234
|
+
line.strip.delete_suffix('|').rstrip
|
235
235
|
end.join(' ')
|
236
236
|
end
|
237
237
|
end
|
data/lib/haml_lint/rake_task.rb
CHANGED
@@ -2,7 +2,8 @@
|
|
2
2
|
|
3
3
|
require 'rake'
|
4
4
|
require 'rake/tasklib'
|
5
|
-
|
5
|
+
|
6
|
+
require_relative 'constants'
|
6
7
|
|
7
8
|
module HamlLint
|
8
9
|
# Rake task interface for haml-lint command line interface.
|
@@ -93,7 +94,7 @@ module HamlLint
|
|
93
94
|
|
94
95
|
task(name, [:files]) do |_task, task_args|
|
95
96
|
# Lazy-load so task doesn't affect Rakefile load time
|
96
|
-
|
97
|
+
require_relative 'cli'
|
97
98
|
|
98
99
|
run_cli(task_args)
|
99
100
|
end
|
@@ -96,7 +96,7 @@ module HamlLint
|
|
96
96
|
# Prints a summary of the number of lints found in a report.
|
97
97
|
#
|
98
98
|
# @param report [HamlLint::Report] the report to print
|
99
|
-
# @param is_append [Boolean] if this is appending to a line. Will
|
99
|
+
# @param is_append [Boolean] if this is appending to a line. Will prefix with ", ".
|
100
100
|
# @return [void]
|
101
101
|
def print_summary_lints(report, is_append:)
|
102
102
|
log.log ', ', false if is_append
|
@@ -114,7 +114,7 @@ module HamlLint
|
|
114
114
|
# Prints a summary of the number of lints corrected in a report.
|
115
115
|
#
|
116
116
|
# @param report [HamlLint::Report] the report to print
|
117
|
-
# @param is_append [Boolean] if this is appending to a line. Will
|
117
|
+
# @param is_append [Boolean] if this is appending to a line. Will prefix with ", ".
|
118
118
|
# @return [void]
|
119
119
|
def print_summary_corrected_lints(report, is_append:)
|
120
120
|
lint_count = report.lints.count(&:corrected)
|
data/lib/haml_lint/reporter.rb
CHANGED
@@ -63,7 +63,7 @@ module HamlLint::RubyExtraction
|
|
63
63
|
transfer_correction_logic(coordinator, to_ruby_lines, haml_lines)
|
64
64
|
end
|
65
65
|
|
66
|
-
# To be
|
66
|
+
# To be overridden by subclasses.
|
67
67
|
#
|
68
68
|
# Logic to transfer the corrections that turned from_ruby_lines into to_ruby_lines.
|
69
69
|
#
|
@@ -17,6 +17,10 @@ module HamlLint::RubyExtraction
|
|
17
17
|
::Haml::Parser.new('', {})
|
18
18
|
end
|
19
19
|
|
20
|
+
# HAML strips newlines when handling multi-line statements (using pipes or trailing comma)
|
21
|
+
# We don't. So the regex must be fixed to correctly detect the start of the string.
|
22
|
+
BLOCK_KEYWORD_REGEX = Regexp.new(Haml::Parser::BLOCK_KEYWORD_REGEX.source.sub('^', '\A'))
|
23
|
+
|
20
24
|
def initialize(document, script_output_prefix:)
|
21
25
|
@document = document
|
22
26
|
@script_output_prefix = script_output_prefix
|
@@ -390,7 +394,7 @@ module HamlLint::RubyExtraction
|
|
390
394
|
# is indented by 0.
|
391
395
|
lines = node.text.split("\n")
|
392
396
|
lines.map! do |line|
|
393
|
-
if line
|
397
|
+
if !/\S/.match?(line)
|
394
398
|
# whitespace or empty
|
395
399
|
''
|
396
400
|
else
|
@@ -546,7 +550,7 @@ module HamlLint::RubyExtraction
|
|
546
550
|
joined_lines = lines.join("\n")
|
547
551
|
|
548
552
|
if haml_processed_ruby_code.include?("\n")
|
549
|
-
haml_processed_ruby_code = haml_processed_ruby_code.
|
553
|
+
haml_processed_ruby_code = haml_processed_ruby_code.tr("\n", ' ')
|
550
554
|
end
|
551
555
|
|
552
556
|
haml_processed_ruby_code.split(/[, ]/)
|
@@ -674,7 +678,7 @@ module HamlLint::RubyExtraction
|
|
674
678
|
|
675
679
|
def self.anonymous_block?(code)
|
676
680
|
# Don't start with a comment and end with a `do`
|
677
|
-
#
|
681
|
+
# Definitely not perfect for the comment handling, but otherwise a more advanced parsing system is needed.
|
678
682
|
# Move the comment to its own line if it's annoying.
|
679
683
|
code !~ /\A\s*#/ &&
|
680
684
|
code =~ /\bdo\s*(\|[^|]*\|\s*)?(#.*)?\z/
|
@@ -692,7 +696,7 @@ module HamlLint::RubyExtraction
|
|
692
696
|
return keyword
|
693
697
|
end
|
694
698
|
|
695
|
-
return unless keyword = code.scan(
|
699
|
+
return unless keyword = code.scan(BLOCK_KEYWORD_REGEX)[0]
|
696
700
|
keyword[0] || keyword[1]
|
697
701
|
end
|
698
702
|
end
|
@@ -19,7 +19,7 @@ module HamlLint::RubyExtraction
|
|
19
19
|
haml_lines[@haml_line_index - 1] = HamlLint::Utils.indent(haml_lines[@haml_line_index - 1], delta_indent)
|
20
20
|
|
21
21
|
to_haml_lines = to_ruby_lines.map do |line|
|
22
|
-
if line
|
22
|
+
if !/\S/.match?(line)
|
23
23
|
# whitespace or empty
|
24
24
|
''
|
25
25
|
else
|
@@ -113,7 +113,7 @@ module HamlLint::RubyExtraction
|
|
113
113
|
line_start_indexes_that_need_pipes = []
|
114
114
|
haml_output_prefix = first_output_haml_prefix
|
115
115
|
to_haml_lines = to_ruby_lines.map.with_index do |line, i| # rubocop:disable Metrics/BlockLength
|
116
|
-
if line
|
116
|
+
if !/\S/.match?(line)
|
117
117
|
# whitespace or empty lines, we don't want any indentation
|
118
118
|
''
|
119
119
|
elsif statement_start_line_indexes.include?(i)
|
data/lib/haml_lint/runner.rb
CHANGED
data/lib/haml_lint/spec.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
3
|
+
require_relative 'spec/normalize_indent'
|
4
|
+
require_relative 'spec/shared_linter_context'
|
5
|
+
require_relative 'spec/shared_rubocop_autocorrect_context'
|
6
|
+
require_relative 'spec/matchers/report_lint'
|
data/lib/haml_lint/tree/node.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require_relative 'null_node'
|
4
4
|
|
5
5
|
module HamlLint::Tree
|
6
6
|
# Represents the root node of a HAML document that contains all other nodes.
|
7
7
|
class RootNode < Node
|
8
|
-
# The name
|
8
|
+
# The name of the file parsed to build this tree.
|
9
9
|
#
|
10
10
|
# @return [String] a file name
|
11
11
|
def file
|
data/lib/haml_lint/utils.rb
CHANGED
@@ -116,7 +116,7 @@ module HamlLint
|
|
116
116
|
|
117
117
|
# Returns indexes of all occurrences of a substring within a string.
|
118
118
|
#
|
119
|
-
# Note, this will not return
|
119
|
+
# Note, this will not return overlapping substrings, so searching for "aa"
|
120
120
|
# in "aaa" will only find one substring, not two.
|
121
121
|
#
|
122
122
|
# @param text [String] the text to search
|
data/lib/haml_lint/version.rb
CHANGED
data/lib/haml_lint.rb
CHANGED
@@ -3,26 +3,26 @@
|
|
3
3
|
# Need to load haml before we can reference some Haml modules in our code
|
4
4
|
require 'haml'
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
6
|
+
require_relative 'haml_lint/constants'
|
7
|
+
require_relative 'haml_lint/exceptions'
|
8
|
+
require_relative 'haml_lint/configuration'
|
9
|
+
require_relative 'haml_lint/configuration_loader'
|
10
|
+
require_relative 'haml_lint/document'
|
11
|
+
require_relative 'haml_lint/haml_visitor'
|
12
|
+
require_relative 'haml_lint/lint'
|
13
|
+
require_relative 'haml_lint/linter_registry'
|
14
|
+
require_relative 'haml_lint/ruby_parser'
|
15
|
+
require_relative 'haml_lint/linter'
|
16
|
+
require_relative 'haml_lint/logger'
|
17
|
+
require_relative 'haml_lint/reporter'
|
18
|
+
require_relative 'haml_lint/report'
|
19
|
+
require_relative 'haml_lint/linter_selector'
|
20
|
+
require_relative 'haml_lint/file_finder'
|
21
|
+
require_relative 'haml_lint/runner'
|
22
|
+
require_relative 'haml_lint/utils'
|
23
|
+
require_relative 'haml_lint/version'
|
24
|
+
require_relative 'haml_lint/version_comparer'
|
25
|
+
require_relative 'haml_lint/severity'
|
26
26
|
|
27
27
|
# Lead all extensions to external source code
|
28
28
|
Dir[File.expand_path('haml_lint/extensions/*.rb', File.dirname(__FILE__))].sort.each do |file|
|
@@ -30,8 +30,8 @@ Dir[File.expand_path('haml_lint/extensions/*.rb', File.dirname(__FILE__))].sort.
|
|
30
30
|
end
|
31
31
|
|
32
32
|
# Load all parse tree node classes
|
33
|
-
|
34
|
-
|
33
|
+
require_relative 'haml_lint/tree/node'
|
34
|
+
require_relative 'haml_lint/node_transformer'
|
35
35
|
Dir[File.expand_path('haml_lint/tree/*.rb', File.dirname(__FILE__))].sort.each do |file|
|
36
36
|
require file
|
37
37
|
end
|
@@ -47,7 +47,7 @@ Dir[File.expand_path('haml_lint/reporter/*.rb', File.dirname(__FILE__))].sort.ea
|
|
47
47
|
end
|
48
48
|
|
49
49
|
# Load all the chunks for RubyExtraction
|
50
|
-
|
50
|
+
require_relative 'haml_lint/ruby_extraction/base_chunk'
|
51
51
|
Dir[File.expand_path('haml_lint/ruby_extraction/*.rb', File.dirname(__FILE__))].sort.each do |file|
|
52
52
|
require file
|
53
53
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: haml_lint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.59.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: 2024-
|
11
|
+
date: 2024-09-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: haml
|
@@ -216,7 +216,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
216
216
|
- !ruby/object:Gem::Version
|
217
217
|
version: '0'
|
218
218
|
requirements: []
|
219
|
-
rubygems_version: 3.
|
219
|
+
rubygems_version: 3.5.9
|
220
220
|
signing_key:
|
221
221
|
specification_version: 4
|
222
222
|
summary: HAML lint tool
|