S
Suraj Kurapati
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.
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.