William James
9/19/2007 11:47:00 AM
On Sep 19, 6:13 am, "Ronald Fischer" <ronald.fisc...@venyon.com>
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