String 使用正确的缩进插入多行字符串

String 使用正确的缩进插入多行字符串,string,interpolation,indentation,multilinestring,String,Interpolation,Indentation,Multilinestring,当我尝试将一个多行字符串插入另一个多行字符串时,我得到了错误的缩进,因为只有子字符串的第一行具有正确的缩进,例如: substring = <<-STRING.strip_heredoc first line second line STRING string = <<-STRING.strip_heredoc Quote #{ substring } from substring STRING 而想要的是 Quote first line

当我尝试将一个多行字符串插入另一个多行字符串时,我得到了错误的缩进,因为只有子字符串的第一行具有正确的缩进,例如:

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 
我的问题与中的几乎相同,但更一般一点

考虑到插值不仅对生成任何SGML(XML、HTML或ERB)有用,而且对SQL和其他语言也有用

是否有任何方法、方法或常规做法可以使用正确的缩进插入多行字符串?

如果没有办法,您会推荐什么工具来对不同的语言进行后期处理(例如HTML、SQL)


更新:


Ruby 2.3功能
我一觉醒来,看到了这个问题,决定把它作为一个早上编程的难题来解决。这比我想象的要难。我对API或它的复杂性不感兴趣,但我不想再花时间了,它确实起作用了。也许你会发现它很有用。如果不是,也许它至少会激发其他一些替代方法

我不知道有任何库或框架能够满足您使用纯Ruby Here文档的需求。这基本上就是Rails的strip herdoc所做的,但我没有使用过它,也不知道它如何处理多行插值。以下是基于您的用例(使用Ruby 2.0)的自定义解决方案的Ruby代码:


是的,谢谢,我知道Ruby 2.3的功能。根据它更新了问题。将检查您的解决方案做得很好,用星号表示。也许我会改进一下,我建议编辑您的答案,并补充说您的解决方案是用Ruby编写的。虽然我的问题也使用了Ruby,但考虑到使用其他方法,可能还有其他答案languages@NickRoz,我的回答是,它使用Ruby 2.0,因为您用Ruby标记了您的问题,并且您的代码是Ruby,如果您使用其他语言得到任何答案,我会感到惊讶。无论如何,我更新了我的答案,使之更加明确。如果你走这条路,我希望你能接受。如果你对此有所改进,请发布你的更新。我很想看看。谢谢。谢谢你的努力!我想等待一点,接受答案,收集更多不同的解决方案和解释。删除了标签ruby,我希望它能让问题变得更广泛
Quote
  first line
  second line
from substring