ReviewOS

also looking at this

zig-utils/zig-regex

Migrate to zig 0.16

#5
Closed illya-laifu wants to merge zig-0.16-migrations into main
13 files +222 -239

Review threads live on the whole diff, not on one commit, so none are shown here - a thread's line means something in the branch's final form, and painting it into an intermediate step would put it on code it is not about.

examples/advanced_features.zigmodified+23-27
Changes to examples/advanced_features.zig
@@ -6,11 +6,7 @@ const Composer = .Composer;
66const Lint = .Lint;
77const ComplexityAnalyzer = .ComplexityAnalyzer;
88
9pub fn main() !void {
10 var gpa = std.heap.GeneralPurposeAllocator(.{}){};
11 defer _ = gpa.deinit();
12 const allocator = gpa.allocator();
13
9pub fn main(init: std.process.Init) !void {
1410 std.debug.print("\n=== Advanced Regex Features Examples ===\n\n", .{});
1511
1612 // Example 1: Builder API - Type-safe pattern construction
@@ -19,7 +15,7 @@ pub fn main() !void {
1915 std.debug.print("Example 1: Builder API for Type-Safe Construction\n", .{});
2016 std.debug.print("───────────────────────────────────────────────\n", .{});
2117
22 var builder = Builder.init(allocator);
18 var builder = Builder.init(init.gpa);
2319 defer builder.deinit();
2420
2521 // Build a pattern for email validation
@@ -35,11 +31,11 @@ pub fn main() !void { renamed throughout
3531 _ = try builder.endOfLine();
3632
3733 const pattern = try builder.build();
38 defer allocator.free(pattern);
34 defer init.gpa.free(pattern);
3935
4036 std.debug.print("Built pattern: {s}\n", .{pattern});
4137
42 var regex = try Regex.compile(allocator, pattern);
38 var regex = try Regex.compile(init.gpa, pattern);
4339 defer regex.deinit();
4440
4541 const test_emails = [_][]const u8{
@@ -64,21 +60,21 @@ pub fn main() !void { renamed throughout
6460 std.debug.print("───────────────────────────────────────────────\n", .{});
6561
6662 // Use predefined patterns
67 const email_pattern = try Patterns.email(allocator);
68 defer allocator.free(email_pattern);
63 const email_pattern = try Patterns.email(init.gpa);
64 defer init.gpa.free(email_pattern);
6965
70 const url_pattern = try Patterns.url(allocator);
71 defer allocator.free(url_pattern);
66 const url_pattern = try Patterns.url(init.gpa);
67 defer init.gpa.free(url_pattern);
7268
73 const phone_pattern = try Patterns.phoneUS(allocator);
74 defer allocator.free(phone_pattern);
69 const phone_pattern = try Patterns.phoneUS(init.gpa);
70 defer init.gpa.free(phone_pattern);
7571
7672 std.debug.print("Email pattern: {s}\n", .{email_pattern});
7773 std.debug.print("URL pattern: {s}\n", .{url_pattern});
7874 std.debug.print("Phone pattern: {s}\n\n", .{phone_pattern});
7975
8076 // Test phone number pattern
81 var phone_regex = try Regex.compile(allocator, phone_pattern);
77 var phone_regex = try Regex.compile(init.gpa, phone_pattern);
8278 defer phone_regex.deinit();
8379
8480 const test_phones = [_][]const u8{
@@ -103,7 +99,7 @@ pub fn main() !void {
10399 std.debug.print("Example 3: Pattern Composition\n", .{});
104100 std.debug.print("───────────────────────────────────────────────\n", .{});
105101
106 var composer = Composer.init(allocator);
102 var composer = Composer.init(init.gpa);
107103 defer composer.deinit();
108104
109105 // Compose multiple patterns with OR
@@ -112,11 +108,11 @@ pub fn main() !void { renamed throughout
112108 _ = try composer.add("bird");
113109
114110 const alternatives = try composer.alternatives();
115 defer allocator.free(alternatives);
111 defer init.gpa.free(alternatives);
116112
117113 std.debug.print("Composed pattern (OR): {s}\n", .{alternatives});
118114
119 var regex = try Regex.compile(allocator, alternatives);
115 var regex = try Regex.compile(init.gpa, alternatives);
120116 defer regex.deinit();
121117
122118 const test_strings = [_][]const u8{
@@ -145,7 +141,7 @@ pub fn main() !void {
145141 const problematic_pattern = "(a+)+b";
146142 std.debug.print("Analyzing pattern: \"{s}\"\n\n", .{problematic_pattern});
147143
148 var lint = Lint.init(allocator, problematic_pattern);
144 var lint = Lint.init(init.gpa, problematic_pattern);
149145 defer lint.deinit();
150146
151147 try lint.analyze();
@@ -157,7 +153,7 @@ pub fn main() !void {
157153 const good_pattern = "^[a-z]+$";
158154 std.debug.print("Analyzing pattern: \"{s}\"\n\n", .{good_pattern});
159155
160 var lint2 = Lint.init(allocator, good_pattern);
156 var lint2 = Lint.init(init.gpa, good_pattern);
161157 defer lint2.deinit();
162158
163159 try lint2.analyze();
@@ -198,7 +194,7 @@ pub fn main() !void {
198194 std.debug.print("───────────────────────────────────────────────\n", .{});
199195
200196 // Build a complex pattern using the builder
201 var builder = Builder.init(allocator);
197 var builder = Builder.init(init.gpa);
202198 defer builder.deinit();
203199
204200 std.debug.print("Building a URL validator:\n", .{});
@@ -215,13 +211,13 @@ pub fn main() !void { renamed throughout
215211 _ = try builder.endOfLine();
216212
217213 const url_pattern_built = try builder.build();
218 defer allocator.free(url_pattern_built);
214 defer init.gpa.free(url_pattern_built);
219215
220216 std.debug.print("Built pattern: {s}\n\n", .{url_pattern_built});
221217
222218 // Lint the pattern
223219 std.debug.print("Linting the pattern:\n", .{});
224 var lint = Lint.init(allocator, url_pattern_built);
220 var lint = Lint.init(init.gpa, url_pattern_built);
225221 defer lint.deinit();
226222
227223 try lint.analyze();
@@ -232,7 +228,7 @@ pub fn main() !void {
232228 std.debug.print("Complexity: {s} (score: {d})\n\n", .{ @tagName(complexity.getLevel()), complexity.complexity_score });
233229
234230 // Test the pattern
235 var regex = try Regex.compile(allocator, url_pattern_built);
231 var regex = try Regex.compile(init.gpa, url_pattern_built);
236232 defer regex.deinit();
237233
238234 const test_urls = [_][]const u8{
@@ -257,7 +253,7 @@ pub fn main() !void {
257253 std.debug.print("Example 7: Complex Pattern with Builder\n", .{});
258254 std.debug.print("───────────────────────────────────────────────\n", .{});
259255
260 var builder = Builder.init(allocator);
256 var builder = Builder.init(init.gpa);
261257 defer builder.deinit();
262258
263259 // Build a pattern for matching IPv4 addresses
@@ -301,11 +297,11 @@ pub fn main() !void { renamed throughout
301297 _ = try builder.endOfLine();
302298
303299 const ipv4_pattern = try builder.build();
304 defer allocator.free(ipv4_pattern);
300 defer init.gpa.free(ipv4_pattern);
305301
306302 std.debug.print("Built pattern: {s}\n\n", .{ipv4_pattern});
307303
308 var regex = try Regex.compile(allocator, ipv4_pattern);
304 var regex = try Regex.compile(init.gpa, ipv4_pattern);
309305 defer regex.deinit();
310306
311307 const test_ips = [_][]const u8{