Sha256: ea51ecb658d9a2ea6256826f935a53fe71212fecbef3beae2d11ed7dc82e1363

Contents?: true

Size: 1.06 KB

Versions: 3

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: true

module RuboCop
  module Cop
    module Sorbet
      # This cop ensures empty class/module definitions in RBI files are
      # done on a single line rather than being split across multiple lines.
      #
      # @example
      #
      #   # bad
      #   module SomeModule
      #   end
      #
      #   # good
      #   module SomeModule; end
      class SingleLineRbiClassModuleDefinitions < RuboCop::Cop::Cop
        MSG = 'Empty class/module definitions in RBI files should be on a single line.'

        def on_module(node)
          process_node(node)
        end

        def on_class(node)
          process_node(node)
        end

        def autocorrect(node)
          -> (corrector) { corrector.replace(node, convert_newlines(node.source)) }
        end

        protected

        def convert_newlines(source)
          source.sub(/[\r\n]+\s*[\r\n]*/, "; ")
        end

        def process_node(node)
          return if node.body
          return if node.single_line?
          add_offense(node)
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rubocop-sorbet-0.6.2 lib/rubocop/cop/sorbet/rbi/single_line_rbi_class_module_definitions.rb
rubocop-sorbet-0.6.1 lib/rubocop/cop/sorbet/single_line_rbi_class_module_definitions.rb
rubocop-sorbet-0.6.0 lib/rubocop/cop/sorbet/single_line_rbi_class_module_definitions.rb