Implement IgnoreCase in RegExp engine
JerryScript-DCO-1.0-Signed-off-by: László Langó llango.u-szeged@partner.samsung.com
This commit is contained in:
committed by
Dániel Bátyai
parent
1b05cc47ff
commit
f48ed52209
@@ -286,7 +286,39 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */
|
|||||||
ecma_char_t ch2 = lit_utf8_iterator_read_next (&iter);
|
ecma_char_t ch2 = lit_utf8_iterator_read_next (&iter);
|
||||||
JERRY_DDLOG ("Character matching %d to %d: ", ch1, ch2);
|
JERRY_DDLOG ("Character matching %d to %d: ", ch1, ch2);
|
||||||
|
|
||||||
if (ch1 != ch2)
|
if (re_ctx_p->flags & RE_FLAG_IGNORE_CASE)
|
||||||
|
{
|
||||||
|
ecma_char_t ch1_buffer[LIT_MAXIMUM_OTHER_CASE_LENGTH];
|
||||||
|
ecma_char_t ch2_buffer[LIT_MAXIMUM_OTHER_CASE_LENGTH];
|
||||||
|
lit_utf8_size_t ch1_length = lit_char_to_lower_case (ch1,
|
||||||
|
ch1_buffer,
|
||||||
|
LIT_MAXIMUM_OTHER_CASE_LENGTH);
|
||||||
|
|
||||||
|
lit_utf8_size_t ch2_length = lit_char_to_lower_case (ch2,
|
||||||
|
ch2_buffer,
|
||||||
|
LIT_MAXIMUM_OTHER_CASE_LENGTH);
|
||||||
|
|
||||||
|
JERRY_ASSERT (ch1_length >= 1 && ch1_length <= LIT_MAXIMUM_OTHER_CASE_LENGTH);
|
||||||
|
JERRY_ASSERT (ch2_length >= 1 && ch2_length <= LIT_MAXIMUM_OTHER_CASE_LENGTH);
|
||||||
|
|
||||||
|
if (ch1_length != ch2_length)
|
||||||
|
{
|
||||||
|
JERRY_DDLOG ("fail\n");
|
||||||
|
re_ctx_p->recursion_depth--;
|
||||||
|
return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */
|
||||||
|
}
|
||||||
|
|
||||||
|
for (lit_utf8_size_t i = 0; i < ch1_length; i++)
|
||||||
|
{
|
||||||
|
if (ch1_buffer[i] != ch2_buffer[i])
|
||||||
|
{
|
||||||
|
JERRY_DDLOG ("fail\n");
|
||||||
|
re_ctx_p->recursion_depth--;
|
||||||
|
return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (ch1 != ch2)
|
||||||
{
|
{
|
||||||
JERRY_DDLOG ("fail\n");
|
JERRY_DDLOG ("fail\n");
|
||||||
re_ctx_p->recursion_depth--;
|
re_ctx_p->recursion_depth--;
|
||||||
|
|||||||
Reference in New Issue
Block a user