Ruby: Indent a string

Posted . Visible to the public.

Copy the attached file to config/initializers/indent_string.rb and you can say

"foo".indent(4) # "    foo"

Note you will find many simpler implementations of this method on the Interweb. They probably won't do what you want in edge cases, fuck up trailing whitespace, etc. The implementation in this card has the following behavior:

describe '#indent' do

  it 'should indent the string by the given number of spaces' do
    "foo".indent(2).should == "  foo"
  end

  it 'should indent multiple lines line by line' do
    "foo\nbar\n".indent(2).should == "  foo\n  bar\n"
  end

  it 'should indent blank lines' do
    "foo\n\nbar\n".indent(2).should == "  foo\n  \n  bar\n"
  end

  it 'should not add whitespace at the end' do
    "foo\nbar".indent(2).should == "  foo\n  bar"
  end

  it 'should take an optional second argument which changes the character used for indentation' do
    "foo".indent(2, '.').should == "..foo"
  end

end
Henning Koch
Last edit
Attachments
Keywords
spaces
License
Source code in this card is licensed under the MIT License.
Posted by Henning Koch to makandra dev (2012-02-13 15:18)