次のような外部ライブラリの文字列があります。
s = " things.each do |thing|\n thing += 5\n thing.save\n end\n\n"
この入力文字列は変更されません。ERB を使用してファイルに挿入する必要があります。例えば:
erb = ERB.new("<%= s %>")
File.write("test.txt", erb.result(instance_eval('binding'))
私の問題はインデントです。文字列を変更しないと、ファイルは次のように記述されます。
things.each do |thing|
thing += 5
thing.run
end
インデントに注意してください。ただし、私がやりたいことは、次のように、さらに 2 つのスペースを均等にインデントしたテキストを挿入することです。
things.each do |thing|
thing += 5
thing.run
end
私がこれを行う場合:
erb = ERB.new(" <%= s %>")
次に、最初の行のみがインデントされます。
things.each do |thing|
thing += 5
thing.run
end
これは、最初の文字列を変更することで実現できます..
erb = ERB.new("<%= s.gsub(/ (\w)/, " \\1") %>")
..しかし、それは少し面倒です。私は本当にビューでそれをしたくありません。ERB で文字列全体をインデントする方法はありますか? 私はそうかもしれないと思います。