当我尝试将一个多行字符串插入另一个时,我得到错误的缩进,因为只有第一行子字符串具有右缩进,例如:
substring = <<-STRING.strip_heredoc
first line
second line
STRING
string = <<-STRING.strip_heredoc
Quote
#{ substring }
from substring
STRING
结果如下:
Quote
first line
second line
from substring
而期望的是
Quote
first line
second line
from substring
我的问题与this question about perl and xml或this one about erb几乎相同,但更为笼统。
考虑到插值不仅可以用于生成任何SGML(XML,HTML或ERB),还可以用于SQL和其他语言......
是否有任何方法,方法或常规做法可以使用正确的缩进来插入多行字符串?
如果没有办法,您建议使用哪种工具来处理不同的语言(例如HTML,SQL)
更新
Ruby 2.3特性<<~
类似于strip_heredoc
仍然(显然)仅在子串的第一行添加缩进
答案 0 :(得分:1)
我醒来后看到了这个问题并决定将它作为早上编程拼图来解决。这比我想象的要难。我对API或复杂性并不感到兴奋,但我不想再浪费时间,而且确实有效。也许你会发现它很有用。如果没有,也许它至少会激发其他一些替代方法。
我不知道使用普通的Ruby Here Documents满足您的需求的任何库或框架。 Ruby 2.3 has a new feature基本上完成了Rails'#strip_heredoc
的功能,但我还没有使用它,我不知道它如何处理多行插值。以下是基于您的用例(使用Ruby 2.0)的自定义解决方案的Ruby代码:
https://gist.github.com/shock/1d269a91f938bf1a1c3cba3856bedf19