From: Trans Date: 2008-10-20T11:33:56+09:00 Subject: Re: a new quotation operator to automatically unindent %q and %Q On Oct 19, 5:38 pm, 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? Hi-- This is not an uncommon request. Consider: http://rcrchive.net/rcrs/2 Long long ago I proposed %l and %L: %l{ |This block of text will, | | unfortunately, | |contain the indentation of | | the | surrounding | code! | |Unless we manually remove it, |as shown by the gsub() below: } But matz does not seem to see merit in any of this. I'm not sure why. T.