У меня есть строка из внешней библиотеки, которая выглядит следующим образом:Отступ многострочных строк в Еврорадио
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
Обратите внимание на отступ. То, что я хочу сделать, однако, чтобы вставить текст равномерно отступом еще два пробела, например, так:
things.each do |thing|
thing += 5
thing.run
end
Если я это сделать:
erb = ERB.new(" <%= s %>")
Тогда только первая строка будет отступом ,
things.each do |thing|
thing += 5
thing.run
end
I может добиться этого путем изменения начальной строки ..
erb = ERB.new("<%= s.gsub(/ (\w)/, " \\1") %>")
.. но это чувствует себя немного грязный. На самом деле я не хочу этого делать. Есть ли способ отступов всей строки в ERB, или мне не повезло? Кажется, я могу быть.
Вы пробовали это? 'ERB.new (" <% = '' + s%> ")' (это добавленная 2-пространственная строка). – lurker