|
@@ -28,6 +28,8 @@ Creation_Error :: enum {
|
|
Expected_Delimiter,
|
|
Expected_Delimiter,
|
|
// An unknown letter was supplied to `create_by_user` after the last delimiter.
|
|
// An unknown letter was supplied to `create_by_user` after the last delimiter.
|
|
Unknown_Flag,
|
|
Unknown_Flag,
|
|
|
|
+ // An unsupported flag was supplied.
|
|
|
|
+ Unsupported_Flag,
|
|
}
|
|
}
|
|
|
|
|
|
Error :: union #shared_nil {
|
|
Error :: union #shared_nil {
|
|
@@ -67,6 +69,7 @@ Regular_Expression :: struct {
|
|
|
|
|
|
/*
|
|
/*
|
|
An iterator to repeatedly match a pattern against a string, to be used with `*_iterator` procedures.
|
|
An iterator to repeatedly match a pattern against a string, to be used with `*_iterator` procedures.
|
|
|
|
+Note: Does not handle `.Multiline` properly.
|
|
*/
|
|
*/
|
|
Match_Iterator :: struct {
|
|
Match_Iterator :: struct {
|
|
regex: Regular_Expression,
|
|
regex: Regular_Expression,
|
|
@@ -282,6 +285,10 @@ create_iterator :: proc(
|
|
flags := flags
|
|
flags := flags
|
|
flags += {.Global} // We're iterating over a string, so the next match could start anywhere
|
|
flags += {.Global} // We're iterating over a string, so the next match could start anywhere
|
|
|
|
|
|
|
|
+ if .Multiline in flags {
|
|
|
|
+ return {}, .Unsupported_Flag
|
|
|
|
+ }
|
|
|
|
+
|
|
result.regex = create(pattern, flags, permanent_allocator, temporary_allocator) or_return
|
|
result.regex = create(pattern, flags, permanent_allocator, temporary_allocator) or_return
|
|
result.capture = preallocate_capture()
|
|
result.capture = preallocate_capture()
|
|
result.temp = temporary_allocator
|
|
result.temp = temporary_allocator
|
|
@@ -435,6 +442,7 @@ match_with_preallocated_capture :: proc(
|
|
|
|
|
|
/*
|
|
/*
|
|
Iterate over a `Match_Iterator` and return successive captures.
|
|
Iterate over a `Match_Iterator` and return successive captures.
|
|
|
|
+Note: Does not handle `.Multiline` properly.
|
|
|
|
|
|
Inputs:
|
|
Inputs:
|
|
- it: Pointer to the `Match_Iterator` to iterate over.
|
|
- it: Pointer to the `Match_Iterator` to iterate over.
|