Недавно я вытащил проект из GitHub, который включал задачу компиляции в файл build.xml. Задача использует SoyToJsSrcCompiler.jar для компиляции пары соевых файлов в javascript. Проект включал целевой каталог, поэтому я мог видеть, что скомпилированные файлы содержат такой код:
jive.fbldr.soy.attachments = function(opt_data, opt_sb) {
var output = opt_sb || new soy.StringBuilder();
output.append('<div class="fbldr-attachments"><div class="fbldr-attach-head"><p>Use the following form to upload file attachments and, optionally, include a variable to reference the uploaded file in the form\'s HTML source.</p><p>Multiple files may be attached, but only one at a time. Click "Finished" when all files have been attached.</p></div><div class="fbldr-attach-field"><label>Link to HTML Variable (optional) : </label></div><div class="fbldr-attach-field"><select id="fbldr-attach-link"><option value="" selected="selected">Select HTML variable...</option>');
var optionList34 = opt_data.variables;
var optionListLen34 = optionList34.length;
Когда я запускаю ту же задачу без каких-либо изменений кода, полученный скомпилированный файл постоянно заменяет opt_sb на opt_ignored и удаляет все ссылки на soy.StringBuilder. Я запустил «java -jar lib/SoyToJsSrcCompiler.jar --outputPathFormat target/soy2/fbldr.soy templates/fbldr.soy» вручную вместо использования build.xml. Я получаю тот же результат.
jive.fbldr.soy.attachments = function(opt_data, opt_ignored) {
var output = '<div class="fbldr-attachments"><div class="fbldr-attach-head"><p>Use the following form to upload file attachments and, optionally, include a variable to reference the uploaded file in the form\'s HTML source.</p><p>Multiple files may be attached, but only one at a time. Click "Finished" when all files have been attached.</p></div><div class="fbldr-attach-field"><label>Link to HTML Variable (optional) : </label></div><div class="fbldr-attach-field"><select id="fbldr-attach-link"><option value="" selected="selected">Select HTML variable...</option>';
var optionList4 = opt_data.variables;
var optionListLen4 = optionList4.length;
Из всей документации Closure Templates, которую я читал, ожидается, что вывод будет использовать StringBuilder. Я не могу понять, почему мой вызов продолжает генерировать вывод, который игнорирует StringBuilder. Может быть кто-нибудь знает, что может быть причиной этого?