# frozen_string_literal: true

module RuboCop
  module Cop
    # Cops for the `Layout` department. The department's cops are registered for lazy loading
    # and their files are loaded on demand.
    module Layout
      extend LazyLoader

      register_cop :AccessModifierIndentation, "#{__dir__}/layout/access_modifier_indentation"
      register_cop :ArgumentAlignment, "#{__dir__}/layout/argument_alignment"
      register_cop :ArrayAlignment, "#{__dir__}/layout/array_alignment"
      register_cop :AssignmentIndentation, "#{__dir__}/layout/assignment_indentation"
      register_cop :BeginEndAlignment, "#{__dir__}/layout/begin_end_alignment"
      register_cop :BlockAlignment, "#{__dir__}/layout/block_alignment"
      register_cop :BlockEndNewline, "#{__dir__}/layout/block_end_newline"
      register_cop :CaseIndentation, "#{__dir__}/layout/case_indentation"
      register_cop :ClassStructure, "#{__dir__}/layout/class_structure"
      register_cop :ClosingHeredocIndentation, "#{__dir__}/layout/closing_heredoc_indentation"
      register_cop :ClosingParenthesisIndentation, "#{__dir__}/layout/closing_parenthesis_indentation"
      register_cop :CommentIndentation, "#{__dir__}/layout/comment_indentation"
      register_cop :ConditionPosition, "#{__dir__}/layout/condition_position"
      register_cop :DefEndAlignment, "#{__dir__}/layout/def_end_alignment"
      register_cop :DotPosition, "#{__dir__}/layout/dot_position"
      register_cop :ElseAlignment, "#{__dir__}/layout/else_alignment"
      register_cop :EmptyComment, "#{__dir__}/layout/empty_comment"
      register_cop :EmptyLineAfterGuardClause, "#{__dir__}/layout/empty_line_after_guard_clause"
      register_cop :EmptyLineAfterMagicComment, "#{__dir__}/layout/empty_line_after_magic_comment"
      register_cop :EmptyLineAfterMultilineCondition, "#{__dir__}/layout/empty_line_after_multiline_condition"
      register_cop :EmptyLineBetweenDefs, "#{__dir__}/layout/empty_line_between_defs"
      register_cop :EmptyLinesAfterModuleInclusion, "#{__dir__}/layout/empty_lines_after_module_inclusion"
      register_cop :EmptyLinesAroundAccessModifier, "#{__dir__}/layout/empty_lines_around_access_modifier"
      register_cop :EmptyLinesAroundArguments, "#{__dir__}/layout/empty_lines_around_arguments"
      register_cop :EmptyLinesAroundAttributeAccessor, "#{__dir__}/layout/empty_lines_around_attribute_accessor"
      register_cop :EmptyLinesAroundBeginBody, "#{__dir__}/layout/empty_lines_around_begin_body"
      register_cop :EmptyLinesAroundBlockBody, "#{__dir__}/layout/empty_lines_around_block_body"
      register_cop :EmptyLinesAroundClassBody, "#{__dir__}/layout/empty_lines_around_class_body"
      register_cop :EmptyLinesAroundExceptionHandlingKeywords, "#{__dir__}/layout/empty_lines_around_exception_handling_keywords"
      register_cop :EmptyLinesAroundMethodBody, "#{__dir__}/layout/empty_lines_around_method_body"
      register_cop :EmptyLinesAroundModuleBody, "#{__dir__}/layout/empty_lines_around_module_body"
      register_cop :EmptyLines, "#{__dir__}/layout/empty_lines"
      register_cop :EndAlignment, "#{__dir__}/layout/end_alignment"
      register_cop :EndOfLine, "#{__dir__}/layout/end_of_line"
      register_cop :ExtraSpacing, "#{__dir__}/layout/extra_spacing"
      register_cop :FirstArgumentIndentation, "#{__dir__}/layout/first_argument_indentation"
      register_cop :FirstArrayElementIndentation, "#{__dir__}/layout/first_array_element_indentation"
      register_cop :FirstArrayElementLineBreak, "#{__dir__}/layout/first_array_element_line_break"
      register_cop :FirstHashElementIndentation, "#{__dir__}/layout/first_hash_element_indentation"
      register_cop :FirstHashElementLineBreak, "#{__dir__}/layout/first_hash_element_line_break"
      register_cop :FirstMethodArgumentLineBreak, "#{__dir__}/layout/first_method_argument_line_break"
      register_cop :FirstMethodParameterLineBreak, "#{__dir__}/layout/first_method_parameter_line_break"
      register_cop :FirstParameterIndentation, "#{__dir__}/layout/first_parameter_indentation"
      register_cop :HashAlignment, "#{__dir__}/layout/hash_alignment"
      register_cop :HeredocArgumentClosingParenthesis, "#{__dir__}/layout/heredoc_argument_closing_parenthesis"
      register_cop :HeredocIndentation, "#{__dir__}/layout/heredoc_indentation"
      register_cop :IndentationConsistency, "#{__dir__}/layout/indentation_consistency"
      register_cop :IndentationStyle, "#{__dir__}/layout/indentation_style"
      register_cop :IndentationWidth, "#{__dir__}/layout/indentation_width"
      register_cop :InitialIndentation, "#{__dir__}/layout/initial_indentation"
      register_cop :LeadingCommentSpace, "#{__dir__}/layout/leading_comment_space"
      register_cop :LeadingEmptyLines, "#{__dir__}/layout/leading_empty_lines"
      register_cop :LineContinuationLeadingSpace, "#{__dir__}/layout/line_continuation_leading_space"
      register_cop :LineContinuationSpacing, "#{__dir__}/layout/line_continuation_spacing"
      register_cop :LineEndStringConcatenationIndentation, "#{__dir__}/layout/line_end_string_concatenation_indentation"
      register_cop :LineLength, "#{__dir__}/layout/line_length"
      register_cop :MultilineArrayBraceLayout, "#{__dir__}/layout/multiline_array_brace_layout"
      register_cop :MultilineArrayLineBreaks, "#{__dir__}/layout/multiline_array_line_breaks"
      register_cop :MultilineAssignmentLayout, "#{__dir__}/layout/multiline_assignment_layout"
      register_cop :MultilineBlockLayout, "#{__dir__}/layout/multiline_block_layout"
      register_cop :MultilineHashBraceLayout, "#{__dir__}/layout/multiline_hash_brace_layout"
      register_cop :MultilineHashKeyLineBreaks, "#{__dir__}/layout/multiline_hash_key_line_breaks"
      register_cop :MultilineMethodArgumentLineBreaks, "#{__dir__}/layout/multiline_method_argument_line_breaks"
      register_cop :MultilineMethodCallBraceLayout, "#{__dir__}/layout/multiline_method_call_brace_layout"
      register_cop :MultilineMethodCallIndentation, "#{__dir__}/layout/multiline_method_call_indentation"
      register_cop :MultilineMethodDefinitionBraceLayout, "#{__dir__}/layout/multiline_method_definition_brace_layout"
      register_cop :MultilineMethodParameterLineBreaks, "#{__dir__}/layout/multiline_method_parameter_line_breaks"
      register_cop :MultilineOperationIndentation, "#{__dir__}/layout/multiline_operation_indentation"
      register_cop :ParameterAlignment, "#{__dir__}/layout/parameter_alignment"
      register_cop :RedundantLineBreak, "#{__dir__}/layout/redundant_line_break"
      register_cop :RescueEnsureAlignment, "#{__dir__}/layout/rescue_ensure_alignment"
      register_cop :SingleLineBlockChain, "#{__dir__}/layout/single_line_block_chain"
      register_cop :SpaceAfterColon, "#{__dir__}/layout/space_after_colon"
      register_cop :SpaceAfterComma, "#{__dir__}/layout/space_after_comma"
      register_cop :SpaceAfterMethodName, "#{__dir__}/layout/space_after_method_name"
      register_cop :SpaceAfterNot, "#{__dir__}/layout/space_after_not"
      register_cop :SpaceAfterSemicolon, "#{__dir__}/layout/space_after_semicolon"
      register_cop :SpaceAroundBlockParameters, "#{__dir__}/layout/space_around_block_parameters"
      register_cop :SpaceAroundEqualsInParameterDefault, "#{__dir__}/layout/space_around_equals_in_parameter_default"
      register_cop :SpaceAroundKeyword, "#{__dir__}/layout/space_around_keyword"
      register_cop :SpaceAroundMethodCallOperator, "#{__dir__}/layout/space_around_method_call_operator"
      register_cop :SpaceAroundOperators, "#{__dir__}/layout/space_around_operators"
      register_cop :SpaceBeforeBlockBraces, "#{__dir__}/layout/space_before_block_braces"
      register_cop :SpaceBeforeBrackets, "#{__dir__}/layout/space_before_brackets"
      register_cop :SpaceBeforeComma, "#{__dir__}/layout/space_before_comma"
      register_cop :SpaceBeforeComment, "#{__dir__}/layout/space_before_comment"
      register_cop :SpaceBeforeFirstArg, "#{__dir__}/layout/space_before_first_arg"
      register_cop :SpaceBeforeSemicolon, "#{__dir__}/layout/space_before_semicolon"
      register_cop :SpaceInLambdaLiteral, "#{__dir__}/layout/space_in_lambda_literal"
      register_cop :SpaceInsideArrayPercentLiteral, "#{__dir__}/layout/space_inside_array_percent_literal"
      register_cop :SpaceInsideArrayLiteralBrackets, "#{__dir__}/layout/space_inside_array_literal_brackets"
      register_cop :SpaceInsideBlockBraces, "#{__dir__}/layout/space_inside_block_braces"
      register_cop :SpaceInsideHashLiteralBraces, "#{__dir__}/layout/space_inside_hash_literal_braces"
      register_cop :SpaceInsideParens, "#{__dir__}/layout/space_inside_parens"
      register_cop :SpaceInsidePercentLiteralDelimiters, "#{__dir__}/layout/space_inside_percent_literal_delimiters"
      register_cop :SpaceInsideRangeLiteral, "#{__dir__}/layout/space_inside_range_literal"
      register_cop :SpaceInsideReferenceBrackets, "#{__dir__}/layout/space_inside_reference_brackets"
      register_cop :SpaceInsideStringInterpolation, "#{__dir__}/layout/space_inside_string_interpolation"
      register_cop :TrailingEmptyLines, "#{__dir__}/layout/trailing_empty_lines"
      register_cop :TrailingWhitespace, "#{__dir__}/layout/trailing_whitespace"

      autoload :EmptyLinesAroundBody, "#{__dir__}/mixin/empty_lines_around_body"
    end
  end
end
