Browse Source

Made RegEx API similar to old version

Zher Huei Lee 10 years ago
parent
commit
87c1e16834

+ 2 - 2
bin/tests/test_string.cpp

@@ -464,8 +464,8 @@ bool test_26() {
 	OS::get_singleton()->print("\n\nTest 26: RegEx\n");
 	RegEx regexp("(.*):(.*)");
 
-	bool res = regexp.match("name:password");
-	printf("\tmatch: %s\n", res?"true":"false");
+	int res = regexp.find("name:password");
+	printf("\tmatch: %s\n", (res>=0)?"true":"false");
 
 	printf("\t%i captures:\n", regexp.get_capture_count());
 	for (int i = 0; i<regexp.get_capture_count(); i++)

+ 2 - 2
demos/misc/regex/regex.gd

@@ -8,11 +8,11 @@ func update_expression():
 
 func update_text():
 	var text = get_node("Text").get_text()
-	regex.match(text)
+	regex.find(text)
 	var list = get_node("List")
 	for child in list.get_children():
 		child.queue_free()
-	for res in regex.get_capture_list():
+	for res in regex.get_captures():
 		var label = Label.new()
 		label.set_text(res)
 		list.add_child(label)

BIN
demos/misc/regex/regex.scn


+ 11 - 9
drivers/nrex/regex.cpp

@@ -16,13 +16,16 @@
 void RegEx::_bind_methods() {
 
 	ObjectTypeDB::bind_method(_MD("compile","pattern"),&RegEx::compile);
-	ObjectTypeDB::bind_method(_MD("match","text","start","end"),&RegEx::match, DEFVAL(0), DEFVAL(-1));
+	ObjectTypeDB::bind_method(_MD("find","text","start","end"),&RegEx::find, DEFVAL(0), DEFVAL(-1));
+	ObjectTypeDB::bind_method(_MD("clear"),&RegEx::clear);
+	ObjectTypeDB::bind_method(_MD("is_valid"),&RegEx::is_valid);
+	ObjectTypeDB::bind_method(_MD("get_capture_count"),&RegEx::get_capture_count);
 	ObjectTypeDB::bind_method(_MD("get_capture","capture"),&RegEx::get_capture);
-	ObjectTypeDB::bind_method(_MD("get_capture_list"),&RegEx::_bind_get_capture_list);
+	ObjectTypeDB::bind_method(_MD("get_captures"),&RegEx::_bind_get_captures);
 
 };
 
-StringArray RegEx::_bind_get_capture_list() const {
+StringArray RegEx::_bind_get_captures() const {
 
 	StringArray ret;
 	int count = get_capture_count();
@@ -64,22 +67,21 @@ String RegEx::get_capture(int capture) const {
 }
 
 Error RegEx::compile(const String& p_pattern) {
-	
+
 	clear();
 
 	exp.compile(p_pattern.c_str());
 
 	ERR_FAIL_COND_V( !exp.valid(), FAILED );
-	
+
 	captures.resize(exp.capture_size());
 
 	return OK;
 
 };
 
-bool RegEx::match(const String& p_text, int p_start, int p_end) const {
+int RegEx::find(const String& p_text, int p_start, int p_end) const {
 
-	
 	ERR_FAIL_COND_V( !exp.valid(), false );
 	ERR_FAIL_COND_V( p_text.length() < p_start, false );
 	ERR_FAIL_COND_V( p_text.length() < p_end, false );
@@ -88,10 +90,10 @@ bool RegEx::match(const String& p_text, int p_start, int p_end) const {
 
 	if (res) {
 		text = p_text;
-		return true;
+		return captures[0].start;
 	}
 	text.clear();
-	return false;
+	return -1;
 
 };
 

+ 2 - 2
drivers/nrex/regex.h

@@ -28,7 +28,7 @@ class RegEx : public Reference {
 protected:
 
 	static void _bind_methods();
-	StringArray _bind_get_capture_list() const;
+	StringArray _bind_get_captures() const;
 
 public:
 
@@ -37,7 +37,7 @@ public:
 	int get_capture_count() const;
 	String get_capture(int capture) const;
 	Error compile(const String& p_pattern);
-	bool match(const String& p_text, int p_start = 0, int p_end = -1) const;
+	int find(const String& p_text, int p_start = 0, int p_end = -1) const;
 
 	RegEx();
 	RegEx(const String& p_pattern);