BUG: Fixed STRING(REGEX REPLACE ...) and added better test.

This commit is contained in:
Brad King 2002-11-06 18:05:39 -05:00
parent 42c464c05e
commit 6ab16695d0
4 changed files with 17 additions and 14 deletions

View File

@ -254,7 +254,7 @@ bool cmStringCommand::RegexReplace(std::vector<std::string> const& args)
std::string::size_type r = re.end(); std::string::size_type r = re.end();
// Concatenate the part of the input that was not matched. // Concatenate the part of the input that was not matched.
output += input.substr(base, l-base); output += input.substr(base, l);
// Make sure the match had some text. // Make sure the match had some text.
if(r-l == 0) if(r-l == 0)
@ -282,7 +282,7 @@ bool cmStringCommand::RegexReplace(std::vector<std::string> const& args)
if((start != std::string::npos) && (end != std::string::npos) && if((start != std::string::npos) && (end != std::string::npos) &&
(start >= 0) && (start <= len) && (end >= 0) && (end <= len)) (start >= 0) && (start <= len) && (end >= 0) && (end <= len))
{ {
output += input.substr(base+l, r-l); output += input.substr(base+start, end-start);
} }
else else
{ {

View File

@ -221,12 +221,13 @@ STRING(REGEX MATCHALL "b" RESULT "abcb")
IF(NOT RESULT) IF(NOT RESULT)
MESSAGE(SEND_ERROR "STRING(REGEX MATCHALL ... ) test failed.") MESSAGE(SEND_ERROR "STRING(REGEX MATCHALL ... ) test failed.")
ENDIF(NOT RESULT) ENDIF(NOT RESULT)
STRING(REGEX REPLACE "(b)" "[\\1]" RESULT "abcde") STRING(REGEX REPLACE ".([bd])." "[\\1]" RESULT "a(b)c(d)e")
IF("x${RESULT}" MATCHES "^xa\\[b\\]cde$") IF("x${RESULT}" MATCHES "^xa\\[b\\]c\\[d\\]e$")
SET(STRING_REGEX_PASSED 1) SET(STRING_REGEX_PASSED 1)
ENDIF("x${RESULT}" MATCHES "^xa\\[b\\]cde$") ENDIF("x${RESULT}" MATCHES "^xa\\[b\\]c\\[d\\]e$")
IF(NOT STRING_REGEX_PASSED) IF(NOT STRING_REGEX_PASSED)
MESSAGE(SEND_ERROR "STRING(REGEX REPLACE ... ) test failed.") MESSAGE(SEND_ERROR
"STRING(REGEX REPLACE ... ) test failed (\"${RESULT}\" v. \"a[b]c[d]e\")")
ENDIF(NOT STRING_REGEX_PASSED) ENDIF(NOT STRING_REGEX_PASSED)
# #

View File

@ -221,12 +221,13 @@ STRING(REGEX MATCHALL "b" RESULT "abcb")
IF(NOT RESULT) IF(NOT RESULT)
MESSAGE(SEND_ERROR "STRING(REGEX MATCHALL ... ) test failed.") MESSAGE(SEND_ERROR "STRING(REGEX MATCHALL ... ) test failed.")
ENDIF(NOT RESULT) ENDIF(NOT RESULT)
STRING(REGEX REPLACE "(b)" "[\\1]" RESULT "abcde") STRING(REGEX REPLACE ".([bd])." "[\\1]" RESULT "a(b)c(d)e")
IF("x${RESULT}" MATCHES "^xa\\[b\\]cde$") IF("x${RESULT}" MATCHES "^xa\\[b\\]c\\[d\\]e$")
SET(STRING_REGEX_PASSED 1) SET(STRING_REGEX_PASSED 1)
ENDIF("x${RESULT}" MATCHES "^xa\\[b\\]cde$") ENDIF("x${RESULT}" MATCHES "^xa\\[b\\]c\\[d\\]e$")
IF(NOT STRING_REGEX_PASSED) IF(NOT STRING_REGEX_PASSED)
MESSAGE(SEND_ERROR "STRING(REGEX REPLACE ... ) test failed.") MESSAGE(SEND_ERROR
"STRING(REGEX REPLACE ... ) test failed (\"${RESULT}\" v. \"a[b]c[d]e\")")
ENDIF(NOT STRING_REGEX_PASSED) ENDIF(NOT STRING_REGEX_PASSED)
# #

View File

@ -221,12 +221,13 @@ STRING(REGEX MATCHALL "b" RESULT "abcb")
IF(NOT RESULT) IF(NOT RESULT)
MESSAGE(SEND_ERROR "STRING(REGEX MATCHALL ... ) test failed.") MESSAGE(SEND_ERROR "STRING(REGEX MATCHALL ... ) test failed.")
ENDIF(NOT RESULT) ENDIF(NOT RESULT)
STRING(REGEX REPLACE "(b)" "[\\1]" RESULT "abcde") STRING(REGEX REPLACE ".([bd])." "[\\1]" RESULT "a(b)c(d)e")
IF("x${RESULT}" MATCHES "^xa\\[b\\]cde$") IF("x${RESULT}" MATCHES "^xa\\[b\\]c\\[d\\]e$")
SET(STRING_REGEX_PASSED 1) SET(STRING_REGEX_PASSED 1)
ENDIF("x${RESULT}" MATCHES "^xa\\[b\\]cde$") ENDIF("x${RESULT}" MATCHES "^xa\\[b\\]c\\[d\\]e$")
IF(NOT STRING_REGEX_PASSED) IF(NOT STRING_REGEX_PASSED)
MESSAGE(SEND_ERROR "STRING(REGEX REPLACE ... ) test failed.") MESSAGE(SEND_ERROR
"STRING(REGEX REPLACE ... ) test failed (\"${RESULT}\" v. \"a[b]c[d]e\")")
ENDIF(NOT STRING_REGEX_PASSED) ENDIF(NOT STRING_REGEX_PASSED)
# #