mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-04 22:58:46 +00:00
Remove Global RegEx flag, default to unanchored patterns
This commit is contained in:
@@ -103,9 +103,11 @@ expensive_for_backtrackers :: proc(t: ^testing.T) {
|
||||
|
||||
@test
|
||||
global_capture_end_word :: proc(t: ^testing.T) {
|
||||
// NOTE: The previous behavior of `.Global`, which was to automatically
|
||||
// insert `.*?` at the start of the pattern, is now default.
|
||||
EXPR :: `Hellope World!`
|
||||
|
||||
rex, err := regex.create(EXPR, { .Global })
|
||||
rex, err := regex.create(EXPR, { /*.Global*/ })
|
||||
if !testing.expect_value(t, err, nil) {
|
||||
return
|
||||
}
|
||||
@@ -145,7 +147,7 @@ global_capture_end_word_unicode :: proc(t: ^testing.T) {
|
||||
EXPR :: `こにちは`
|
||||
needle := string(EXPR)
|
||||
|
||||
rex, err := regex.create(EXPR, { .Global, .Unicode })
|
||||
rex, err := regex.create(EXPR, { /*.Global,*/ .Unicode })
|
||||
if !testing.expect_value(t, err, nil) {
|
||||
return
|
||||
}
|
||||
@@ -185,7 +187,7 @@ global_capture_end_word_unicode :: proc(t: ^testing.T) {
|
||||
alternations :: proc(t: ^testing.T) {
|
||||
EXPR :: `a(?:bb|cc|dd|ee|ff)`
|
||||
|
||||
rex, err := regex.create(EXPR, { .No_Capture, .Global })
|
||||
rex, err := regex.create(EXPR, { .No_Capture, /*.Global*/ })
|
||||
if !testing.expect_value(t, err, nil) {
|
||||
return
|
||||
}
|
||||
@@ -219,7 +221,7 @@ classes :: proc(t: ^testing.T) {
|
||||
EXPR :: `[\w\d]+`
|
||||
NEEDLE :: "0123456789abcdef"
|
||||
|
||||
rex, err := regex.create(EXPR, { .Global })
|
||||
rex, err := regex.create(EXPR, { /*.Global*/ })
|
||||
if !testing.expect_value(t, err, nil) {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -51,13 +51,13 @@ check_expression_with_flags :: proc(t: ^testing.T, pattern: string, flags: regex
|
||||
}
|
||||
|
||||
check_expression :: proc(t: ^testing.T, pattern, haystack: string, needles: ..string, extra_flags := regex.Flags{}, loc := #caller_location) {
|
||||
check_expression_with_flags(t, pattern, { .Global } + extra_flags,
|
||||
check_expression_with_flags(t, pattern, extra_flags,
|
||||
haystack, ..needles, loc = loc)
|
||||
check_expression_with_flags(t, pattern, { .Global, .No_Optimization } + extra_flags,
|
||||
check_expression_with_flags(t, pattern, { .No_Optimization } + extra_flags,
|
||||
haystack, ..needles, loc = loc)
|
||||
check_expression_with_flags(t, pattern, { .Global, .Unicode } + extra_flags,
|
||||
check_expression_with_flags(t, pattern, { .Unicode } + extra_flags,
|
||||
haystack, ..needles, loc = loc)
|
||||
check_expression_with_flags(t, pattern, { .Global, .Unicode, .No_Optimization } + extra_flags,
|
||||
check_expression_with_flags(t, pattern, { .Unicode, .No_Optimization } + extra_flags,
|
||||
haystack, ..needles, loc = loc)
|
||||
}
|
||||
|
||||
@@ -516,7 +516,7 @@ test_pos_index_explicitly :: proc(t: ^testing.T) {
|
||||
STR :: "This is an island."
|
||||
EXPR :: `\bis\b`
|
||||
|
||||
rex, err := regex.create(EXPR, { .Global })
|
||||
rex, err := regex.create(EXPR)
|
||||
if !testing.expect_value(t, err, nil) {
|
||||
return
|
||||
}
|
||||
@@ -642,9 +642,9 @@ test_unicode_explicitly :: proc(t: ^testing.T) {
|
||||
}
|
||||
{
|
||||
EXPR :: "こにちは!"
|
||||
check_expression_with_flags(t, EXPR, { .Global, .Unicode },
|
||||
check_expression_with_flags(t, EXPR, { .Unicode },
|
||||
"Hello こにちは!", "こにちは!")
|
||||
check_expression_with_flags(t, EXPR, { .Global, .Unicode, .No_Optimization },
|
||||
check_expression_with_flags(t, EXPR, { .Unicode, .No_Optimization },
|
||||
"Hello こにちは!", "こにちは!")
|
||||
}
|
||||
}
|
||||
@@ -901,12 +901,12 @@ test_everything_at_once :: proc(t: ^testing.T) {
|
||||
@test
|
||||
test_creation_from_user_string :: proc(t: ^testing.T) {
|
||||
{
|
||||
USER_EXPR :: `/^hellope$/gmixun-`
|
||||
USER_EXPR :: `/^hellope$/mixun-`
|
||||
STR :: "hellope"
|
||||
rex, err := regex.create_by_user(USER_EXPR)
|
||||
defer regex.destroy(rex)
|
||||
testing.expect_value(t, err, nil)
|
||||
testing.expect_value(t, rex.flags, regex.Flags{ .Global, .Multiline, .Case_Insensitive, .Ignore_Whitespace, .Unicode, .No_Capture, .No_Optimization })
|
||||
testing.expect_value(t, rex.flags, regex.Flags{ .Multiline, .Case_Insensitive, .Ignore_Whitespace, .Unicode, .No_Capture, .No_Optimization })
|
||||
|
||||
_, ok := regex.match(rex, STR)
|
||||
testing.expectf(t, ok, "expected user-provided RegEx %v to match %q", rex, STR)
|
||||
@@ -1102,14 +1102,14 @@ Iterator_Test :: struct {
|
||||
|
||||
iterator_vectors := []Iterator_Test{
|
||||
{
|
||||
`xxab32ab52xx`, `(ab\d{1})`, {}, // {.Global} implicitly added by the iterator
|
||||
`xxab32ab52xx`, `(ab\d{1})`, {},
|
||||
{
|
||||
{pos = {{2, 5}, {2, 5}}, groups = {"ab3", "ab3"}},
|
||||
{pos = {{6, 9}, {6, 9}}, groups = {"ab5", "ab5"}},
|
||||
},
|
||||
},
|
||||
{
|
||||
`xxfoobarxfoobarxx`, `f(o)ob(ar)`, {.Global},
|
||||
`xxfoobarxfoobarxx`, `f(o)ob(ar)`, {},
|
||||
{
|
||||
{pos = {{2, 8}, {3, 4}, {6, 8}}, groups = {"foobar", "o", "ar"}},
|
||||
{pos = {{9, 15}, {10, 11}, {13, 15}}, groups = {"foobar", "o", "ar"}},
|
||||
@@ -1135,4 +1135,4 @@ test_match_iterator :: proc(t: ^testing.T) {
|
||||
}
|
||||
testing.expect_value(t, it.idx, len(test.expected))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user