Sha256: 6b8b7effa6d0f54f77d37e9b3138345952673f5bc7dd918116eeb9f2a9edd8ac

Contents?: true

Size: 949 Bytes

Versions: 132

Compression:

Stored size: 949 Bytes

Contents

# frozen_string_literal: true

module RuboCop
  module Cop
    # Common functionality for working with heredoc strings.
    module Heredoc
      OPENING_DELIMITER = /(<<[~-]?)['"`]?([^'"`]+)['"`]?/.freeze

      def on_str(node)
        return unless node.heredoc?

        on_heredoc(node)
      end
      alias on_dstr on_str
      alias on_xstr on_str

      def on_heredoc(_node)
        raise NotImplementedError
      end

      private

      def indent_level(str)
        indentations = str.lines.map { |line| line[/^\s*/] }.reject { |line| line.end_with?("\n") }
        indentations.empty? ? 0 : indentations.min_by(&:size).size
      end

      def delimiter_string(node)
        return '' unless (match = node.source.match(OPENING_DELIMITER))

        match.captures[1]
      end

      def heredoc_type(node)
        return '' unless (match = node.source.match(OPENING_DELIMITER))

        match.captures[0]
      end
    end
  end
end

Version data entries

132 entries across 132 versions & 12 rubygems

Version Path
rubocop-1.68.0 lib/rubocop/cop/mixin/heredoc.rb
rubocop-1.67.0 lib/rubocop/cop/mixin/heredoc.rb
rubocop-1.66.1 lib/rubocop/cop/mixin/heredoc.rb
rubocop-1.66.0 lib/rubocop/cop/mixin/heredoc.rb
rubocop-1.65.1 lib/rubocop/cop/mixin/heredoc.rb
blacklight-spotlight-3.6.0.beta8 vendor/bundle/ruby/3.2.0/gems/rubocop-1.64.1/lib/rubocop/cop/mixin/heredoc.rb
rubocop-1.65.0 lib/rubocop/cop/mixin/heredoc.rb
katalyst-govuk-formbuilder-1.9.2 vendor/bundle/ruby/3.3.0/gems/rubocop-1.64.1/lib/rubocop/cop/mixin/heredoc.rb
rubocop-1.64.1 lib/rubocop/cop/mixin/heredoc.rb
rubocop-1.63.4 lib/rubocop/cop/mixin/heredoc.rb
rubocop-1.63.3 lib/rubocop/cop/mixin/heredoc.rb
rubocop-1.63.2 lib/rubocop/cop/mixin/heredoc.rb
harbr-2.8.1 vendor/bundle/ruby/3.2.0/gems/rubocop-1.57.2/lib/rubocop/cop/mixin/heredoc.rb
rubocop-1.63.1 lib/rubocop/cop/mixin/heredoc.rb
rubocop-1.63.0 lib/rubocop/cop/mixin/heredoc.rb
bison-0.1.0 vendor/bundle/ruby/3.2.0/gems/rubocop-1.62.1/lib/rubocop/cop/mixin/heredoc.rb
rubocop-1.62.1 lib/rubocop/cop/mixin/heredoc.rb
rubocop-1.62.0 lib/rubocop/cop/mixin/heredoc.rb
rubocop-1.61.0 lib/rubocop/cop/mixin/heredoc.rb
mlh-rubocop-config-1.0.3 vendor/bundle/ruby/3.2.0/gems/rubocop-1.60.2/lib/rubocop/cop/mixin/heredoc.rb