瀏覽代碼

Camelcased script variables will now capitalize in the inspector.

Nathan Warden 10 年之前
父節點
當前提交
8f5bf2a2ef
共有 2 個文件被更改,包括 25 次插入3 次删除
  1. 24 1
      core/ustring.cpp
  2. 1 2
      core/ustring.h

+ 24 - 1
core/ustring.cpp

@@ -482,7 +482,7 @@ void String::erase(int p_pos, int p_chars) {
 
 String String::capitalize() const {
 
-	String aux=this->replace("_"," ").to_lower();
+	String aux=this->camelcase_to_underscore().replace("_"," ").to_lower();
 	String cap;
 	for (int i=0;i<aux.get_slice_count(" ");i++) {
 		
@@ -498,6 +498,29 @@ String String::capitalize() const {
 	
 	return cap;
 }
+
+
+String String::camelcase_to_underscore() const {
+	const CharType * cstr = c_str();
+	String newString;
+	const char A = 'A', Z = 'Z';
+	int startIndex = 0;
+
+	for ( int i = 1; i < this->size()-1; i++ ) {
+		bool isCapital = cstr[i] >= A && cstr[i] <= Z;
+
+		if ( isCapital ) {
+			newString += "_" + this->substr(startIndex, i-startIndex);
+			startIndex = i;
+		}
+	}
+
+	newString += "_" + this->substr(startIndex, this->size()-startIndex);
+
+	return newString;
+}
+
+
 int String::get_slice_count(String p_splitter) const{
 
 	if (empty())

+ 1 - 2
core/ustring.h

@@ -149,6 +149,7 @@ public:
 	static double to_double(const CharType* p_str, const CharType **r_end=NULL);
 	static int64_t to_int(const CharType* p_str,int p_len=-1);
 	String capitalize() const;
+	String camelcase_to_underscore() const;
 
 	int get_slice_count(String p_splitter) const;
 	String get_slice(String p_splitter,int p_slice) const;
@@ -225,8 +226,6 @@ public:
 	String(const char *p_str);
 	String(const CharType *p_str,int p_clip_to_len=-1);
 	String(const StrRange& p_range);
-
-
 };