WI-31889 Template project: can't save some files

This commit is contained in:
Shaverdova Elena
2016-06-06 16:50:20 +02:00
parent a2497edcee
commit 1032e663d7
2 changed files with 29 additions and 3 deletions
@@ -292,9 +292,17 @@ public class SaveProjectAsTemplateAction extends AnAction {
}
char c = input.charAt(i);
if (c == '$' || c == '#') {
if (c == '#' || c == '[' || c == ']' || c =='{' || c == '}' || c =='(' || c == ')') {
builder.append('\\');
}
if (c == '$') {
builder.append('\\');
if(input.startsWith("$true", i) || input.startsWith("$false", i) || input.startsWith("$.", i)){
builder.append(c).append('\\');
continue;
}
}
builder.append(c);
}
return builder.toString();
@@ -330,8 +330,26 @@ public class TemplateModuleBuilder extends ModuleBuilder {
properties.put(ProjectTemplateParameterFactory.IJ_PROJECT_NAME, projectName);
}
String merged = FileTemplateUtil.mergeTemplate(properties, content, true, exceptionConsumer);
return StringUtilRt.convertLineSeparators(merged.replace("\\$", "$").replace("\\#", "#"), SystemInfo.isWindows ? "\r\n" : "\n").
getBytes(CharsetToolkit.UTF8_CHARSET);
StringBuilder sb = new StringBuilder(merged.length());
for (int i = 0; i < merged.length(); i++) {
char c = merged.charAt(i);
if (c == '\\') {
if(i < merged.length() -1){
if(merged.startsWith("\\$\\true", i) || merged.startsWith("\\$\\false", i) || merged.startsWith("\\$\\.", i)){
sb.append("$");
i+=2;
continue;
}
char d = merged.charAt(i+1);
if(d == '$' || d == '#' || d == '[' || d == ']' || d =='{' || d == '}' || d =='(' || d == ')'){
continue;
}
}
}
sb.append(c);
}
return StringUtilRt.convertLineSeparators(sb.toString(), SystemInfo.isWindows ? "\r\n" : "\n").getBytes(CharsetToolkit.UTF8_CHARSET);
}
@Nullable