Это упрощенный пример, но я работаю над переводчиком кода, который выводит javascript.Из-за того, как выполняется анализ, я должен выводить перевод по частям.Т.е. я получаю файл javascript, который выглядит примерно так, но выглядит намного дольше:
function coolfunc() {
var result = "";
greet = function(user,town) {
var output = '';
output += 'Welcome ' + user + '!';
output += 'How is the weather in ' + town + '?';
return output;
}
goobye = function(user,town) {
var output = '';
output += 'Farewell ' + user + '!';
output += 'Enjoy the weather in ' + town + '!';
return output;
}
result += "Some output 1";
result += "Some output 2";
result += greet("Larry","Cool town");
result += goobye("Larry","Cool town");
return result;
}
Есть ли какой-нибудь постпроцессор, который я мог бы использовать для сжатия вышеупомянутого в нечто вроде следующего:
function coolfunc() {
greet = function(user,town) {
var output = 'Welcome ' + user + '!'+'How is the weather in ' + town + '?';
return output;
}
goobye = function(user,town) {
var output = 'Farewell ' + user + '!'+'Enjoy the weather in ' + town + '!';
return output;
}
var result = "Some output 1"+"Some output 2"+greet("Larry","Cool town")+goobye("Larry","Cool town");
return result;
}
Если бы он мог объединить смежные статические конкатенации строк, то это было бы подливкой.
Я подумал, что это сделает компилятор yuicompressor или замыкание, но, насколько я могу судить, это не так.*
Редактировать:
Комментарии пока что говорят мне, чтобы сделать это в переводчике.Я не думаю, что это лучший вариант, потому что это усложнит чтение перевода ... подобно тому, как люди пишут подробный код, а затем минимизируют его для производства.