2016-07-30 2 views
-1

Я пытаюсь заменить часть страницы внешним контентом на лету.Строка # gsub испортила замену?

Вот source.html:

<!DOCTYPE html> 
<html> 
    <head> 
    <%= foobar %> 
    </head> 
    <body> 
    This is body 
    </body> 
</html> 

И строка замены inject.js:

var REGEXP = /^\'$/i; var foo = 1; 

рубин код, который выводит файл путем объединения обоих.

pageContent = File.read('./source.html') 
jsContent = File.read('./inject.js'); 
output = pageContent.gsub("<%= foobar %>", jsContent) 
File.open('./dest.html', "w+") do |f| 
    f.write(output) 
end 

Однако я получаю перепутались dest.html, который происходит в inject.js из-за \'.

<!DOCTYPE html> 
<html> 
    <head> 
    var REGEXP = /^ 
    </head> 
    <body> 
    This is body 
    </body> 
</html>$/i; var foo = 1; 
    </head> 
    <body> 
    This is body 
    </body> 
</html> 

Как я могу избавиться от этой проблемы?

ответ

1

Попробуйте использовать форму gsub блока:

output = pageContent.gsub("<%= foobar %>") { jsContent }

0

This one может помочь вам в этом случае.

Не можете найти что-то типа %q{jsContent}.

Смежные вопросы