Sha256: 9824e697bb90f1f572a653cd5e7454f98b5f815798c0998d4b06a294b2fa21df

Contents?: true

Size: 677 Bytes

Versions: 186

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

186 entries across 178 versions & 25 rubygems

Version Path
activesupport-8.0.2 lib/active_support/core_ext/string/strip.rb
tailscale_middleware-0.0.3 vendor/cache/ruby/3.4.0/gems/activesupport-8.0.1/lib/active_support/core_ext/string/strip.rb
trusty-cms-7.0.9.1 vendor/bundle/ruby/3.3.0/gems/activesupport-7.0.8.7/lib/active_support/core_ext/string/strip.rb
minato_ruby_api_client-0.2.2 vendor/bundle/ruby/3.2.0/gems/activesupport-7.1.3.4/lib/active_support/core_ext/string/strip.rb
activesupport-8.0.1 lib/active_support/core_ext/string/strip.rb
activesupport-8.0.0.1 lib/active_support/core_ext/string/strip.rb
activesupport-7.2.2.1 lib/active_support/core_ext/string/strip.rb
activesupport-7.1.5.1 lib/active_support/core_ext/string/strip.rb
activesupport-7.0.8.7 lib/active_support/core_ext/string/strip.rb
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