瀏覽代碼

Merge pull request #5350 from vnen/fix-classesxml-sorting

Fix classes.xml sorting
Rémi Verschelde 9 年之前
父節點
當前提交
3b5b893a0e
共有 3 個文件被更改,包括 442 次插入313 次删除
  1. 413 313
      doc/base/classes.xml
  2. 26 0
      tools/doc/doc_data.cpp
  3. 3 0
      tools/doc/doc_data.h

文件差異過大導致無法顯示
+ 413 - 313
doc/base/classes.xml


+ 26 - 0
tools/doc/doc_data.cpp

@@ -36,6 +36,21 @@
 #include "io/compression.h"
 #include "scene/resources/theme.h"
 
+struct _ConstantComparator {
+
+	inline bool operator()(const DocData::ConstantDoc &a, const DocData::ConstantDoc &b) const {
+		String left_a = a.name.find("_") == -1 ? a.name : a.name.substr(0, a.name.find("_"));
+		String left_b = b.name.find("_") == -1 ? b.name : b.name.substr(0, b.name.find("_"));
+		if (left_a == left_b) // If they have the same prefix
+			if (a.value == b.value)
+				return a.name < b.name; // Sort by name if the values are the same
+			else
+				return a.value < b.value; // Sort by value otherwise
+		else
+			return left_a < left_b; // Sort by name if the prefixes aren't the same
+	}
+};
+
 void DocData::merge_from(const DocData& p_data) {
 
 	for( Map<String,ClassDoc>::Element *E=class_list.front();E;E=E->next()) {
@@ -942,6 +957,8 @@ Error DocData::save(const String& p_path) {
 		_write_string(f,1,"</description>");
 		_write_string(f,1,"<methods>");
 
+		c.methods.sort();
+
 		for(int i=0;i<c.methods.size();i++) {
 
 			MethodDoc &m=c.methods[i];
@@ -984,6 +1001,8 @@ Error DocData::save(const String& p_path) {
 		if (c.properties.size()) {
 			_write_string(f,1,"<members>");
 
+			c.properties.sort();
+
 			for(int i=0;i<c.properties.size();i++) {
 
 
@@ -999,6 +1018,8 @@ Error DocData::save(const String& p_path) {
 
 		if (c.signals.size()) {
 
+			c.signals.sort();
+
 			_write_string(f,1,"<signals>");
 			for(int i=0;i<c.signals.size();i++) {
 
@@ -1025,6 +1046,8 @@ Error DocData::save(const String& p_path) {
 
 		_write_string(f,1,"<constants>");
 
+		c.constants.sort_custom<_ConstantComparator>();
+
 		for(int i=0;i<c.constants.size();i++) {
 
 			ConstantDoc &k=c.constants[i];
@@ -1037,6 +1060,9 @@ Error DocData::save(const String& p_path) {
 		_write_string(f,1,"</constants>");
 
 		if (c.theme_properties.size()) {
+
+			c.theme_properties.sort();
+
 			_write_string(f,1,"<theme_items>");
 			for(int i=0;i<c.theme_properties.size();i++) {
 

+ 3 - 0
tools/doc/doc_data.h

@@ -67,6 +67,9 @@ public:
 		String name;
 		String type;
 		String description;
+		bool operator<(const PropertyDoc& p_prop) const {
+			return name<p_prop.name;
+		}
 	};
 
 	struct ClassDoc  {

部分文件因文件數量過多而無法顯示