From: Ken Bloom Date: 2008-10-20T08:38:57+09:00 Subject: Re: a new quotation operator to automatically unindent %q and %Q On Sun, 19 Oct 2008 16:38:05 -0500, Suraj Kurapati wrote: > Hello everyone, > > Many times I have faced the situation of embedding multi-line strings in > my programs while wanting to preserve the indentation of the surrounding > code: > > module Foo > class Bar > def to_s > %q{ > This block of text will, > > unfortunately, > > contain the indentation of > > the > surrounding > code! > > Unless we manually remove it, > as shown by the gsub() below: > > }.gsub(/^ /, '') > end > end > end > > The same problem occurs for "here documents" as well. We are forced to > manually remove the indentation. > > I would like to propose a new set of string quotation operators %s and > %S which behave just like %q and %Q respectively, except that they are > automatically unindented by the Ruby interpreter using the first line of > non-whitespace text: > > amount_to_unindent = input_string[/\A(?:\r?\n)+([ \t]+)(?=\S)/, 1] > input_string.gsub! /^#{amount_to_unindent}/, '' > > What do you think? > > Thanks for your consideration. Use the facets gem's String#margin instead? --Ken -- Chanoch (Ken) Bloom. PhD candidate. Linguistic Cognition Laboratory. Department of Computer Science. Illinois Institute of Technology. http://www.iit.edu/~kbloom1/