Class: RuboCop::Cop::Layout::HeredocIndentation
- Extended by:
- AutoCorrector, TargetRubyVersion
- Defined in:
- lib/rubocop/cop/layout/heredoc_indentation.rb
Overview
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 included from Alignment
Constants inherited from Base
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
Methods included from AutoCorrector
Methods included from TargetRubyVersion
maximum_target_ruby_version, minimum_target_ruby_version, required_maximum_ruby_version, required_minimum_ruby_version, support_target_ruby_version?
Methods included from Heredoc
Methods inherited from Base
#active_support_extensions_enabled?, #add_global_offense, #add_offense, #always_autocorrect?, autocorrect_incompatible_with, badge, #begin_investigation, #callbacks_needed, callbacks_needed, #config_to_allow_offenses, #config_to_allow_offenses=, #contextual_autocorrect?, #cop_config, cop_name, #cop_name, department, documentation_url, exclude_from_registry, #excluded_file?, #external_dependency_checksum, inherited, #initialize, #inspect, joining_forces, lint?, match?, #offenses, #on_investigation_end, #on_new_investigation, #on_other_file, #parse, #parser_engine, #ready, #relevant_file?, requires_gem, #string_literals_frozen_by_default?, support_autocorrect?, support_multiple_source?, #target_gem_version, #target_rails_version, #target_ruby_version
Methods included from ExcludeLimit
Methods included from AutocorrectLogic
#autocorrect?, #autocorrect_enabled?, #autocorrect_requested?, #autocorrect_with_disable_uncorrectable?, #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
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/rubocop/cop/layout/heredoc_indentation.rb', line 58 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) + configured_indentation_width return if expected_indent_level == body_indent_level else return unless body_indent_level.zero? || heredoc_squish?(node) end return if line_too_long?(node) register_offense(node, heredoc_indent_type) end |
#squish_method?(node) ⇒ Object
54 55 56 |
# File 'lib/rubocop/cop/layout/heredoc_indentation.rb', line 54 def_node_matcher :squish_method?, "(send _ {:squish :squish!})\n" |