diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp index 522c42928c7..b291ee396b3 100644 --- a/core/bind/core_bind.cpp +++ b/core/bind/core_bind.cpp @@ -1321,9 +1321,9 @@ String _File::get_line() const{ } -Vector _File::get_csv_line() const { +Vector _File::get_csv_line(String delim) const { ERR_FAIL_COND_V(!f,Vector()); - return f->get_csv_line(); + return f->get_csv_line(delim); } /**< use this for files WRITTEN in _big_ endian machines (ie, amiga/mac) @@ -1506,7 +1506,7 @@ void _File::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_endian_swap","enable"),&_File::set_endian_swap); ObjectTypeDB::bind_method(_MD("get_error:Error"),&_File::get_error); ObjectTypeDB::bind_method(_MD("get_var"),&_File::get_var); - ObjectTypeDB::bind_method(_MD("get_csv_line"),&_File::get_csv_line); + ObjectTypeDB::bind_method(_MD("get_csv_line","delim"),&_File::get_csv_line,DEFVAL(",")); ObjectTypeDB::bind_method(_MD("store_8","value"),&_File::store_8); ObjectTypeDB::bind_method(_MD("store_16","value"),&_File::store_16); diff --git a/core/bind/core_bind.h b/core/bind/core_bind.h index cb8fba3dcd7..30cc93fa11e 100644 --- a/core/bind/core_bind.h +++ b/core/bind/core_bind.h @@ -392,7 +392,7 @@ public: virtual void store_pascal_string(const String& p_string); virtual String get_pascal_string(); - Vector get_csv_line() const; + Vector get_csv_line(String delim=",") const; void store_buffer(const DVector& p_buffer); ///< store an array of bytes diff --git a/core/os/file_access.cpp b/core/os/file_access.cpp index d82d0b63c59..68c9dee84d2 100644 --- a/core/os/file_access.cpp +++ b/core/os/file_access.cpp @@ -277,7 +277,9 @@ String FileAccess::get_line() const { return String::utf8(line.get_data()); } -Vector FileAccess::get_csv_line() const { +Vector FileAccess::get_csv_line(String delim) const { + + ERR_FAIL_COND_V(delim.length()!=1,Vector()); String l; int qc=0; @@ -303,7 +305,7 @@ Vector FileAccess::get_csv_line() const { CharType s[2]={0,0}; - if (!in_quote && c==',') { + if (!in_quote && c==delim[0]) { strings.push_back(current); current=String(); } else if (c=='"') { diff --git a/core/os/file_access.h b/core/os/file_access.h index 51cf8391177..3249e21ffb8 100644 --- a/core/os/file_access.h +++ b/core/os/file_access.h @@ -102,7 +102,7 @@ public: virtual int get_buffer(uint8_t *p_dst,int p_length) const; ///< get an array of bytes virtual String get_line() const; - virtual Vector get_csv_line() const; + virtual Vector get_csv_line(String delim=",") const; /**< use this for files WRITTEN in _big_ endian machines (ie, amiga/mac) * It's not about the current CPU type but file formats.