Sha256: 9824e697bb90f1f572a653cd5e7454f98b5f815798c0998d4b06a294b2fa21df

Contents?: true

Size: 677 Bytes

Versions: 177

Compression:

Stored size: 677 Bytes

Contents

# frozen_string_literal: true

class String
  # Strips indentation in heredocs.
  #
  # For example in
  #
  #   if options[:usage]
  #     puts <<-USAGE.strip_heredoc
  #       This command does such and such.
  #
  #       Supported options are:
  #         -h         This message
  #         ...
  #     USAGE
  #   end
  #
  # the user would see the usage message aligned against the left margin.
  #
  # Technically, it looks for the least indented non-empty line
  # in the whole string, and removes that amount of leading whitespace.
  def strip_heredoc
    gsub(/^#{scan(/^[ \t]*(?=\S)/).min}/, "").tap do |stripped|
      stripped.freeze if frozen?
    end
  end
end

Version data entries

177 entries across 169 versions & 22 rubygems

Version Path
activesupport-8.0.0 lib/active_support/core_ext/string/strip.rb
activesupport-7.2.2 lib/active_support/core_ext/string/strip.rb
activesupport-7.1.5 lib/active_support/core_ext/string/strip.rb
activesupport-8.0.0.rc2 lib/active_support/core_ext/string/strip.rb
activesupport-7.2.1.2 lib/active_support/core_ext/string/strip.rb
activesupport-7.1.4.2 lib/active_support/core_ext/string/strip.rb
activesupport-7.0.8.6 lib/active_support/core_ext/string/strip.rb
activesupport-6.1.7.10 lib/active_support/core_ext/string/strip.rb
activesupport-8.0.0.rc1 lib/active_support/core_ext/string/strip.rb
activesupport-6.1.7.9 lib/active_support/core_ext/string/strip.rb
activesupport-7.2.1.1 lib/active_support/core_ext/string/strip.rb
activesupport-7.1.4.1 lib/active_support/core_ext/string/strip.rb
activesupport-7.0.8.5 lib/active_support/core_ext/string/strip.rb
activesupport-8.0.0.beta1 lib/active_support/core_ext/string/strip.rb
omg-activesupport-8.0.0.alpha9 lib/active_support/core_ext/string/strip.rb
omg-activesupport-8.0.0.alpha8 lib/active_support/core_ext/string/strip.rb
omg-activesupport-8.0.0.alpha7 lib/active_support/core_ext/string/strip.rb
omg-activesupport-8.0.0.alpha4 lib/active_support/core_ext/string/strip.rb
omg-activesupport-8.0.0.alpha3 lib/active_support/core_ext/string/strip.rb
omg-activesupport-8.0.0.alpha2 lib/active_support/core_ext/string/strip.rb