Class: RuboCop::Cop::Layout::HeredocIndentation
- Extended by:
- AutoCorrector
- Includes:
- Heredoc
- Defined in:
- lib/rubocop/cop/layout/heredoc_indentation.rb
Overview
This cop checks the indentation of the here document bodies. The bodies are indented one step.
Note: When “Layout/LineLength“‘s `AllowHeredoc` is false (not default),
this cop does not add any offenses for long here documents to
avoid `Layout/LineLength`'s offenses.
Constant Summary collapse
- TYPE_MSG =
'Use %<indentation_width>d spaces for indentation in a ' \ 'heredoc by using `<<~` instead of `%<current_indent_type>s`.'
- WIDTH_MSG =
'Use %<indentation_width>d spaces for indentation in a heredoc.'
Constants included from Heredoc
Constants inherited from Base
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
Methods included from AutoCorrector
Methods included from Heredoc
Methods inherited from Base
#add_global_offense, #add_offense, autocorrect_incompatible_with, badge, callbacks_needed, #callbacks_needed, #config_to_allow_offenses, #config_to_allow_offenses=, #cop_config, cop_name, #cop_name, department, documentation_url, exclude_from_registry, #excluded_file?, #external_dependency_checksum, inherited, #initialize, joining_forces, lint?, match?, #offenses, #on_investigation_end, #on_new_investigation, #on_other_file, #ready, #relevant_file?, support_autocorrect?, support_multiple_source?, #target_rails_version, #target_ruby_version
Methods included from ExcludeLimit
Methods included from AutocorrectLogic
#autocorrect?, #autocorrect_enabled?, #autocorrect_requested?, #correctable?, #disable_uncorrectable?, #safe_autocorrect?
Methods included from IgnoredNode
#ignore_node, #ignored_node?, #part_of_ignored_node?
Methods included from Util
Constructor Details
This class inherits a constructor from RuboCop::Cop::Base
Instance Method Details
#on_heredoc(node) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/rubocop/cop/layout/heredoc_indentation.rb', line 32 def on_heredoc(node) body = heredoc_body(node) return if body.strip.empty? body_indent_level = indent_level(body) heredoc_indent_type = heredoc_indent_type(node) if heredoc_indent_type == '~' expected_indent_level = base_indent_level(node) + indentation_width return if expected_indent_level == body_indent_level else return unless body_indent_level.zero? end return if line_too_long?(node) register_offense(node, heredoc_indent_type) end |