先頭にスペースのない複数行の文字列を、メソッドに適切に配置するにはどうすればよいですか? ここに私の試みをいくつか示します。うまく機能しているものはあまり楽しいものではありません...
module Something
def welcome
"
Hello
This is an example. I have to write this multiline string outside the welcome method
indentation in order for it to be properly formatted on screen. :(
"
end
end
module Something
def welcome
"
Hello
This is an example. I am inside welcome method indentation but for some reason
I am not working...
".ljust(12)
end
end
module Something
def welcome
"Hello\n\n"+
"This is an example. I am inside welcome method indentation and properly"+
"formatted but isn't there a better way?"
end
end
アップデート
こちらはルビースタイルガイドのメソッド:
code = <<-END.gsub(/^\s+\|/, '')
|def test
| some_method
| other_method
|end
END
# => "def test\n some_method\n other_method\nend\n"
ベストアンサー1
Ruby 2.3.0 以降では、このための組み込みメソッドがあります: [ <<~
]
indented =
<<-EOS
Hello
This is an example. I have to write this multiline string outside the welcome method indentation in order for it to be properly formatted on screen. :(
EOS
unindented =
<<~EOS
Hello
This is an example. I have to write this multiline string outside the welcome method indentation in order for it to be properly formatted on screen. :(
EOS
puts indented #=>
Hello
This is an example. I have to write this multiline string outside the welcome method indentation in order for it to be properly formatted on screen. :(
puts unindented #=>
Hello
This is an example. I have to write this multiline string outside the welcome method indentation in order for it to be properly formatted on screen. :(