From: William James Date: 2007-09-19T21:00:05+09:00 Subject: Re: Indenting strings - elegant alternatives? On Sep 19, 6:13 am, "Ronald Fischer" wrote: > Just in case someone would like to contribute ideas of elegant code: > > PROBLEM: > > Given a string of lines (for example, "abc\nde\nfgh\n") and a number n, > produce a string of the same lines, but each line indented by n spaces. > If the original string does NOT end in \n, it is OK (but not required) > to have it ending in \n in the result. > > Speed is not an issue; I'm mainly looking EITHER for compact/elegant > code in Core Ruby (noing well that elegance is a very subjective > criterium), OR for some library function which already has solved this. > > Here is my own (pretty straightforward) solution to the problem: > > def indent(n,s) > (s.split.map {|x| (' '*n)+x}.join("\n"))+"\n" > end > > This works, so the only reason I'm posting this, is to learn about > alternative ways of doing this. def indent(n,s) s.gsub( /^/, ' '*n ) end