BUG: Fixed STRING(REGEX REPLACE ...) and added better test.
This commit is contained in:
parent
42c464c05e
commit
6ab16695d0
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
Loading…
Reference in New Issue