aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/core_ext/string/strip.rb
diff options
context:
space:
mode:
authorXavier Noria <fxn@hashref.com>2010-08-29 23:50:30 +0200
committerXavier Noria <fxn@hashref.com>2010-08-29 23:52:38 +0200
commit475ea14fd0a84604158ec30d9c718d3c8ae055d6 (patch)
tree37fa903848fb4eb623aed26a66abbffb1dafb1f4 /activesupport/lib/active_support/core_ext/string/strip.rb
parenta302a333f8edc373e299da4c123bafadcc3a1306 (diff)
downloadrails-475ea14fd0a84604158ec30d9c718d3c8ae055d6.tar.gz
rails-475ea14fd0a84604158ec30d9c718d3c8ae055d6.tar.bz2
rails-475ea14fd0a84604158ec30d9c718d3c8ae055d6.zip
implements String#strip_heredoc
Diffstat (limited to 'activesupport/lib/active_support/core_ext/string/strip.rb')
-rw-r--r--activesupport/lib/active_support/core_ext/string/strip.rb24
1 files changed, 24 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/core_ext/string/strip.rb b/activesupport/lib/active_support/core_ext/string/strip.rb
new file mode 100644
index 0000000000..84d279adbc
--- /dev/null
+++ b/activesupport/lib/active_support/core_ext/string/strip.rb
@@ -0,0 +1,24 @@
+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 line in the whole string, and removes
+ # that amount of leading whitespace.
+ def strip_heredoc
+ indent = chomp.scan(/^\s*/).min.size
+ gsub(/^\s{#{indent}}/, '')
+ end
+end \ No newline at end of file