haml_lint 0.58.0 → 0.60.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: 6962d4b0d9f7f60b473641303f1ef1b8962797bf7abdeb8db4e57b36df65f7d3
4
- data.tar.gz: 214c0ccb902d9c742af8df5f4e65fc221f6ae9bec572b7a535df0ee682b5dfac
3
+ metadata.gz: 8bf4b2b435129bea13f5c1b32aabf202f5e8731264df179e3e7a9c16017b8654
4
+ data.tar.gz: 34a95aa1ac68c54a513d9431be449f5a53963d77e7d451cfa532c60ff08fe08f
5
5
  SHA512:
6
- metadata.gz: b161dc044d6a5a22be918384f7cde7b0fd9b20dc2f4408f4a535ae72ed0b7fab75b96f885db83e92ae4cce769b811118978412bbba819e6f38178fb261f040f1
7
- data.tar.gz: fb2af5b891147f8588cf9ffcd17fccc7ef0674bf11127327addbca55c9a8c094c6e53f8f268550dc160955d4c1c889948d7285fc39027287781d3abba7f66873
6
+ metadata.gz: a65d869de4f21555cc165baccae390ae09202de3d6aea707404806d0ee40bdd1d5916d7ab3ae9a7b4a0d35c1a4a5a8c89da3cb317389877460e03f48b5577c54
7
+ data.tar.gz: 84ccd1349eb889e3b516f42e4919eb0003566f01ba62a01b05cce28aeb801138c6f725eac054c23073997f0e67e452765ac78c03bfe710639c9742828b85521d
@@ -45,6 +45,18 @@ Layout/EndAlignment:
45
45
  Layout/EndOfLine:
46
46
  Enabled: false
47
47
 
48
+ # Complying with this lint requires the use of pipes which causes a conflict with MultilinePipe.
49
+ Layout/FirstArrayElementLineBreak:
50
+ Enabled: false
51
+
52
+ # Complying with this lint requires the use of pipes which causes a conflict with MultilinePipe.
53
+ Layout/FirstHashElementLineBreak:
54
+ Enabled: false
55
+
56
+ # Complying with this lint requires the use of pipes which causes a conflict with MultilinePipe.
57
+ Layout/FirstMethodArgumentLineBreak:
58
+ Enabled: false
59
+
48
60
  # Turning this cop on can turn
49
61
  # = content_tag(:span) do
50
62
  # - foo
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'haml_lint/adapter/haml_5'
4
- require 'haml_lint/adapter/haml_6'
5
- require 'haml_lint/exceptions'
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
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'haml_lint'
4
- require 'haml_lint/options'
3
+ require_relative '../haml_lint'
4
+ require_relative 'options'
5
5
 
6
6
  require 'sysexits'
7
7
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'haml_lint/adapter'
3
+ require_relative 'adapter'
4
4
 
5
5
  module HamlLint
6
6
  # Represents a parsed Haml document and its associated metadata.
@@ -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 souce, this gets called to
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
@@ -21,7 +21,7 @@ module HamlLint
21
21
  return unless enabled?
22
22
 
23
23
  if node.parsed_script.contains_instance_variables?
24
- record_lint(node, "Avoid using instance variables in #{file_types} views")
24
+ record_lint(node, failure_message)
25
25
  end
26
26
  end
27
27
 
@@ -41,10 +41,27 @@ module HamlLint
41
41
 
42
42
  visit_script(node) ||
43
43
  if node.parsed_attributes.contains_instance_variables?
44
- record_lint(node, "Avoid using instance variables in #{file_types} views")
44
+ record_lint(node, failure_message)
45
45
  end
46
46
  end
47
47
 
48
+ # Checks for instance variables in :ruby filters when the linter is enabled.
49
+ #
50
+ # @param [HamlLint::Tree::FilterNode]
51
+ # @return [void]
52
+ def visit_filter(node)
53
+ return unless enabled?
54
+ return unless node.filter_type == 'ruby'
55
+ return unless ast = parse_ruby(node.text)
56
+
57
+ ast.each_node do |i|
58
+ if i.type == :ivar
59
+ record_lint(node, failure_message)
60
+ break
61
+ end
62
+ end
63
+ end
64
+
48
65
  private
49
66
 
50
67
  # Tracks whether the linter is enabled for the file.
@@ -75,5 +92,13 @@ module HamlLint
75
92
  def matcher
76
93
  @matcher ||= Regexp.new(config['matchers'][file_types] || '\A_.*\.haml\z')
77
94
  end
95
+
96
+ # The error message when an ivar is found
97
+ #
98
+ # @api private
99
+ # @return [String]
100
+ def failure_message
101
+ "Avoid using instance variables in #{file_types} views"
102
+ end
78
103
  end
79
104
  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 transfered: #{e.message} - Consider linting the file " \
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------"
@@ -10,7 +10,7 @@ module HamlLint
10
10
  # @param args [Array<String>] arguments passed via the command line
11
11
  # @return [Hash] parsed options
12
12
  def parse(args)
13
- @options = {}
13
+ @options = default_options
14
14
 
15
15
  OptionParser.new do |parser|
16
16
  parser.banner = "Usage: #{APP_NAME} [options] [file1, file2, ...]"
@@ -32,6 +32,10 @@ module HamlLint
32
32
 
33
33
  private
34
34
 
35
+ def default_options
36
+ { parallel: true }
37
+ end
38
+
35
39
  def add_linter_options(parser) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
36
40
  parser.on('--auto-gen-config', 'Generate a configuration file acting as a TODO list') do
37
41
  @options[:auto_gen_config] = true
@@ -56,6 +60,10 @@ module HamlLint
56
60
  @options[:parallel] = true
57
61
  end
58
62
 
63
+ parser.on('--no-parallel', 'Disable parallel linter runs') do
64
+ @options[:parallel] = false
65
+ end
66
+
59
67
  parser.on('-a', '--auto-correct', 'Auto-correct offenses (only when it’s safe)') do
60
68
  @options[:autocorrect] = :safe
61
69
  end
@@ -2,7 +2,8 @@
2
2
 
3
3
  require 'rake'
4
4
  require 'rake/tasklib'
5
- require 'haml_lint/constants'
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
- require 'haml_lint/cli'
97
+ require_relative 'cli'
97
98
 
98
99
  run_cli(task_args)
99
100
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'haml_lint/reporter/utils'
3
+ require_relative 'utils'
4
4
 
5
5
  module HamlLint
6
6
  # Outputs lints in a simple format with the filename, line number, and lint
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'haml_lint/reporter/progress_reporter'
3
+ require_relative 'progress_reporter'
4
4
 
5
5
  module HamlLint
6
6
  # Outputs a YAML configuration file based on existing violations.
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'haml_lint/reporter/hash_reporter'
3
+ require_relative 'hash_reporter'
4
4
 
5
5
  module HamlLint
6
6
  # Outputs report as a JSON document.
@@ -1,7 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'rainbow'
4
- require 'haml_lint/reporter/utils'
4
+
5
+ require_relative 'utils'
5
6
 
6
7
  module HamlLint
7
8
  # Outputs files as they are output as a simple symbol, then outputs
@@ -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 preffix with ", ".
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 preffix with ", ".
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)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'haml_lint/reporter/hooks'
3
+ require_relative 'reporter/hooks'
4
4
 
5
5
  module HamlLint
6
6
  # Abstract lint reporter. Subclass and override {#display_report} to
@@ -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 overriden by subclasses.
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
  #
@@ -678,7 +678,7 @@ module HamlLint::RubyExtraction
678
678
 
679
679
  def self.anonymous_block?(code)
680
680
  # Don't start with a comment and end with a `do`
681
- # Definetly not perfect for the comment handling, but otherwise a more advanced parsing system is needed.
681
+ # Definitely not perfect for the comment handling, but otherwise a more advanced parsing system is needed.
682
682
  # Move the comment to its own line if it's annoying.
683
683
  code !~ /\A\s*#/ &&
684
684
  code =~ /\bdo\s*(\|[^|]*\|\s*)?(#.*)?\z/
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'parallel'
4
+
4
5
  require_relative 'source'
5
6
 
6
7
  module HamlLint
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'haml_lint/spec/normalize_indent'
4
- require 'haml_lint/spec/shared_linter_context'
5
- require 'haml_lint/spec/shared_rubocop_autocorrect_context'
6
- require 'haml_lint/spec/matchers/report_lint'
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'
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'haml_lint/directive'
3
+ require_relative '../directive'
4
4
 
5
5
  module HamlLint::Tree
6
6
  # Represents a HAML comment node.
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'haml_lint/comment_configuration'
3
+ require_relative '../comment_configuration'
4
4
 
5
5
  module HamlLint::Tree
6
6
  # Decorator class that provides a convenient set of helpers for HAML's
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'haml_lint/tree/null_node'
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 fo the file parsed to build this tree.
8
+ # The name of the file parsed to build this tree.
9
9
  #
10
10
  # @return [String] a file name
11
11
  def file
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'haml_lint/parsed_ruby'
3
+ require_relative '../parsed_ruby'
4
4
 
5
5
  module HamlLint::Tree
6
6
  # Represents a node which produces output based on Ruby code.
@@ -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 overlaping substrings, so searching for "aa"
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
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Defines the gem version.
4
4
  module HamlLint
5
- VERSION = '0.58.0'
5
+ VERSION = '0.60.0'
6
6
  end
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
- require 'haml_lint/constants'
7
- require 'haml_lint/exceptions'
8
- require 'haml_lint/configuration'
9
- require 'haml_lint/configuration_loader'
10
- require 'haml_lint/document'
11
- require 'haml_lint/haml_visitor'
12
- require 'haml_lint/lint'
13
- require 'haml_lint/linter_registry'
14
- require 'haml_lint/ruby_parser'
15
- require 'haml_lint/linter'
16
- require 'haml_lint/logger'
17
- require 'haml_lint/reporter'
18
- require 'haml_lint/report'
19
- require 'haml_lint/linter_selector'
20
- require 'haml_lint/file_finder'
21
- require 'haml_lint/runner'
22
- require 'haml_lint/utils'
23
- require 'haml_lint/version'
24
- require 'haml_lint/version_comparer'
25
- require 'haml_lint/severity'
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
- require 'haml_lint/tree/node'
34
- require 'haml_lint/node_transformer'
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
- require 'haml_lint/ruby_extraction/base_chunk'
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,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: haml_lint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.58.0
4
+ version: 0.60.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shane da Silva
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-04-27 00:00:00.000000000 Z
10
+ date: 2025-01-30 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: haml
@@ -201,7 +200,6 @@ homepage: https://github.com/sds/haml-lint
201
200
  licenses:
202
201
  - MIT
203
202
  metadata: {}
204
- post_install_message:
205
203
  rdoc_options: []
206
204
  require_paths:
207
205
  - lib
@@ -216,8 +214,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
216
214
  - !ruby/object:Gem::Version
217
215
  version: '0'
218
216
  requirements: []
219
- rubygems_version: 3.5.9
220
- signing_key:
217
+ rubygems_version: 3.6.2
221
218
  specification_version: 4
222
219
  summary: HAML lint tool
223
220
  test_files: []