Преглед изворни кода

Remove printing facilities for `Regular_Expression`

The `original_pattern` introduced a tenuous dependency to the expression
value as a whole, and after some consideration, I decided that it would
be better for the developer to manage their own pattern strings.

In the event you need to print the text representation of a pattern,
it's usually better that you manage the memory of it as well.
Feoramund пре 1 година
родитељ
комит
042f6de478

+ 0 - 16
core/fmt/fmt.odin

@@ -9,7 +9,6 @@ import "core:io"
 import "core:reflect"
 import "core:reflect"
 import "core:strconv"
 import "core:strconv"
 import "core:strings"
 import "core:strings"
-import "core:text/regex"
 import "core:time"
 import "core:time"
 import "core:unicode/utf8"
 import "core:unicode/utf8"
 
 
@@ -2406,21 +2405,6 @@ fmt_named :: proc(fi: ^Info, v: any, verb: rune, info: runtime.Type_Info_Named)
 			write_padded_number(fi, (ns), 9)
 			write_padded_number(fi, (ns), 9)
 			io.write_string(fi.writer, " +0000 UTC", &fi.n)
 			io.write_string(fi.writer, " +0000 UTC", &fi.n)
 			return
 			return
-
-		case regex.Regular_Expression:
-			io.write_byte(fi.writer, '/')
-			for r in a.original_pattern {
-				if r == '/' {
-					io.write_string(fi.writer, `\/`)
-				} else {
-					io.write_rune(fi.writer, r)
-				}
-			}
-			io.write_byte(fi.writer, '/')
-			for flag in a.flags {
-				io.write_byte(fi.writer, regex.Flag_To_Letter[flag])
-			}
-			return
 		}
 		}
 	}
 	}
 
 

+ 0 - 2
core/text/regex/regex.odin

@@ -30,7 +30,6 @@ Capture :: struct {
 }
 }
 
 
 Regular_Expression :: struct {
 Regular_Expression :: struct {
-	original_pattern: string,
 	flags: Flags,
 	flags: Flags,
 	class_data: []virtual_machine.Rune_Class_Data,
 	class_data: []virtual_machine.Rune_Class_Data,
 	program: []virtual_machine.Opcode `fmt:"-"`,
 	program: []virtual_machine.Opcode `fmt:"-"`,
@@ -92,7 +91,6 @@ create :: proc(
 	// allocator so everything can be tightly packed.
 	// allocator so everything can be tightly packed.
 	context.allocator = permanent_allocator
 	context.allocator = permanent_allocator
 
 
-	result.original_pattern = pattern
 	result.flags = flags
 	result.flags = flags
 
 
 	if len(class_data) > 0 {
 	if len(class_data) > 0 {

+ 4 - 4
tests/benchmark/text/regex/benchmark_regex.odin

@@ -111,7 +111,7 @@ global_capture_end_word :: proc(t: ^testing.T) {
 	}
 	}
 	defer regex.destroy(rex)
 	defer regex.destroy(rex)
 
 
-	report := fmt.tprintf("Matching %v over a block of random ASCII text.", rex)
+	report := fmt.tprintf("Matching %q over a block of random ASCII text.", EXPR)
 
 
 	for size in sizes {
 	for size in sizes {
 		data := make([]u8, size)
 		data := make([]u8, size)
@@ -151,7 +151,7 @@ global_capture_end_word_unicode :: proc(t: ^testing.T) {
 	}
 	}
 	defer regex.destroy(rex)
 	defer regex.destroy(rex)
 
 
-	report := fmt.tprintf("Matching %v over a block of random Unicode text.", rex)
+	report := fmt.tprintf("Matching %q over a block of random Unicode text.", EXPR)
 
 
 	for size in sizes {
 	for size in sizes {
 		data := make([]u8, size)
 		data := make([]u8, size)
@@ -191,7 +191,7 @@ alternations :: proc(t: ^testing.T) {
 	}
 	}
 	defer regex.destroy(rex)
 	defer regex.destroy(rex)
 
 
-	report := fmt.tprintf("Matching %v over a text block of only `a`s.", rex)
+	report := fmt.tprintf("Matching %q over a text block of only `a`s.", EXPR)
 
 
 	for size in sizes {
 	for size in sizes {
 		data := make([]u8, size)
 		data := make([]u8, size)
@@ -225,7 +225,7 @@ classes :: proc(t: ^testing.T) {
 	}
 	}
 	defer regex.destroy(rex)
 	defer regex.destroy(rex)
 
 
-	report := fmt.tprintf("Matching %v over a string of spaces with %q at the end.", rex, NEEDLE)
+	report := fmt.tprintf("Matching %q over a string of spaces with %q at the end.", EXPR, NEEDLE)
 
 
 	for size in sizes {
 	for size in sizes {
 		data := make([]u8, size)
 		data := make([]u8, size)

+ 0 - 22
tests/core/text/regex/test_core_text_regex.odin

@@ -681,28 +681,6 @@ test_optional_inside_optional :: proc(t: ^testing.T) {
 	check_expression(t, EXPR, "", "")
 	check_expression(t, EXPR, "", "")
 }
 }
 
 
-@test
-test_printing :: proc(t: ^testing.T) {
-	rex, err := regex.create(`^/a$`, {
-		.Global,
-		.Multiline,
-		.Case_Insensitive,
-		.Unicode,
-		.Ignore_Whitespace,
-		.No_Optimization,
-		.No_Capture,
-	})
-	if !testing.expect_value(t, err, nil) {
-		return
-	}
-	defer regex.destroy(rex)
-
-	str := fmt.tprint(rex)
-	str_hash := fmt.tprintf("%#v", rex)
-	testing.expect_value(t, str, `/^\/a$/gmixun-`)
-	testing.expect_value(t, str_hash, `/^\/a$/gmixun-`)
-}
-
 
 
 
 
 @test
 @test