Add quotes to .tscn keys, solves #4366

This commit is contained in:
Juan Linietsky 2016-06-20 18:41:59 -03:00
parent e9d2c9ad51
commit 6872139300
2 changed files with 21 additions and 3 deletions

View File

@ -1775,7 +1775,20 @@ Error VariantParser::parse_tag_assign_eof(Stream *p_stream, int &line, String &r
} }
if (c>32) { if (c>32) {
if (c!='=') { if (c=='"') { //quoted
p_stream->saved='"';
Token tk;
Error err = get_token(p_stream,tk,line,r_err_str);
if (err)
return err;
if (tk.type!=TK_STRING) {
r_err_str="Error reading quoted string";
return err;
}
what=tk.value;
} else if (c!='=') {
what+=String::chr(c); what+=String::chr(c);
} else { } else {
r_assign=what; r_assign=what;

View File

@ -1140,7 +1140,12 @@ void ResourceFormatSaverTextInstance::_find_resources(const Variant& p_variant,b
} }
static String _valprop(const String& p_name) {
if (p_name.find("\"")!=-1 || p_name.find("=")!=-1 || p_name.find(" ")!=-1)
return "\""+p_name.c_escape()+"\"";
return p_name;
}
Error ResourceFormatSaverTextInstance::save(const String &p_path,const RES& p_resource,uint32_t p_flags) { Error ResourceFormatSaverTextInstance::save(const String &p_path,const RES& p_resource,uint32_t p_flags) {
@ -1296,7 +1301,7 @@ Error ResourceFormatSaverTextInstance::save(const String &p_path,const RES& p_re
String vars; String vars;
VariantWriter::write_to_string(value,vars,_write_resources,this); VariantWriter::write_to_string(value,vars,_write_resources,this);
f->store_string(name+" = "+vars+"\n"); f->store_string(_valprop(name)+" = "+vars+"\n");
} }
@ -1370,7 +1375,7 @@ Error ResourceFormatSaverTextInstance::save(const String &p_path,const RES& p_re
String vars; String vars;
VariantWriter::write_to_string(state->get_node_property_value(i,j),vars,_write_resources,this); VariantWriter::write_to_string(state->get_node_property_value(i,j),vars,_write_resources,this);
f->store_string(String(state->get_node_property_name(i,j))+" = "+vars+"\n"); f->store_string(_valprop(String(state->get_node_property_name(i,j)))+" = "+vars+"\n");
} }
if (state->get_node_property_count(i)) { if (state->get_node_property_count(i)) {