Consistently use middle dot (·) instead of bullet (•) to separate items (#25248)
This commit is contained in:
		
							
								
								
									
										26
									
								
								lib/linter/haml_middle_dot.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								lib/linter/haml_middle_dot.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
module HamlLint
 | 
			
		||||
  # Bans the usage of “•” (bullet) in HTML/HAML in favor of “·” (middle dot) in anything that will end up as a text node. (including string literals in Ruby code)
 | 
			
		||||
  class Linter::MiddleDot < Linter
 | 
			
		||||
    include LinterRegistry
 | 
			
		||||
 | 
			
		||||
    # rubocop:disable Style/MiddleDot
 | 
			
		||||
    BULLET = '•'
 | 
			
		||||
    # rubocop:enable Style/MiddleDot
 | 
			
		||||
    MIDDLE_DOT = '·'
 | 
			
		||||
    MESSAGE = "Use '#{MIDDLE_DOT}' (middle dot) instead of '#{BULLET}' (bullet)".freeze
 | 
			
		||||
 | 
			
		||||
    def visit_plain(node)
 | 
			
		||||
      return unless node.text.include?(BULLET)
 | 
			
		||||
 | 
			
		||||
      record_lint(node, MESSAGE)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def visit_script(node)
 | 
			
		||||
      return unless node.script.include?(BULLET)
 | 
			
		||||
 | 
			
		||||
      record_lint(node, MESSAGE)
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										31
									
								
								lib/linter/rubocop_middle_dot.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								lib/linter/rubocop_middle_dot.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
			
		||||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
module RuboCop
 | 
			
		||||
  module Cop
 | 
			
		||||
    module Style
 | 
			
		||||
      # Bans the usage of “•” (bullet) in HTML/HAML in favor of “·” (middle dot) in string literals
 | 
			
		||||
      class MiddleDot < Base
 | 
			
		||||
        extend AutoCorrector
 | 
			
		||||
        extend Util
 | 
			
		||||
 | 
			
		||||
        # rubocop:disable Style/MiddleDot
 | 
			
		||||
        BULLET = '•'
 | 
			
		||||
        # rubocop:enable Style/MiddleDot
 | 
			
		||||
        MIDDLE_DOT = '·'
 | 
			
		||||
        MESSAGE = "Use '#{MIDDLE_DOT}' (middle dot) instead of '#{BULLET}' (bullet)".freeze
 | 
			
		||||
 | 
			
		||||
        def on_str(node)
 | 
			
		||||
          # Constants like __FILE__ are handled as strings,
 | 
			
		||||
          # but don't respond to begin.
 | 
			
		||||
          return unless node.loc.respond_to?(:begin) && node.loc.begin
 | 
			
		||||
 | 
			
		||||
          return unless node.value.include?(BULLET)
 | 
			
		||||
 | 
			
		||||
          add_offense(node, message: MESSAGE) do |corrector|
 | 
			
		||||
            corrector.replace(node, node.source.gsub(BULLET, MIDDLE_DOT))
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
		Reference in New Issue
	
	Block a user