AlexanderPavlenko
5/8/2012 - 5:16 PM

wrap erb template into erb template

wrap erb template into erb template

#!/usr/bin/env ruby
filename = ARGV[0]
str = File.read filename
blocks = str.split('<%').map{|s| s.empty? ? s : s.split('%>') }.flatten
inside = false
blocks.map do |block|
  if inside
    block.gsub! '\\', '\\\\\\\\'
    block.gsub! '"', '\"'
    block.gsub! '#{', '#" %><%= "{" + "'
  end
  inside = !inside
end
result = []
blocks.each_slice(2) do |pair|
  result.push pair.join('<%= "<%')
end
result = result.join('%" + ">" %>')
File.open("/tmp/#{filename.split('/').last}.erb", 'w') do |f|
  f.write result
end