From 836a4b6e63ac4bd7beb406cb20edf23f0bd342a9 Mon Sep 17 00:00:00 2001 From: Jose Colon Rodriguez Date: Mon, 26 Feb 2024 12:24:42 -0400 Subject: Using separate data struct model. --- src/main.zig | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) (limited to 'src/main.zig') diff --git a/src/main.zig b/src/main.zig index 946ae01..57db05b 100644 --- a/src/main.zig +++ b/src/main.zig @@ -1,29 +1,47 @@ const std = @import("std"); // const GraphemeIterator = @import("ziglyph").GraphemeIterator; -// const GraphemeIterator = @import("Grapheme").GraphemeIterator; +// const Data = @import("grapheme").Data; +// const GraphemeIterator = @import("grapheme").Iterator; + // const codePointWidth = @import("ziglyph").display_width.codePointWidth; -// const codePointWidth = @import("display_width").codePointWidth; // const strWidth = @import("ziglyph").display_width.strWidth; +// const Data = @import("display_width").Data; +// const codePointWidth = @import("display_width").codePointWidth; // const strWidth = @import("display_width").strWidth; -// const CodePointIterator = @import("CodePoint").CodePointIterator; + +// const CodePointIterator = @import("ziglyph").CodePointIterator; +// const CodePointIterator = @import("code_point").Iterator; + // const ascii = @import("ascii"); // const ascii = std.ascii; + // const norm = @import("ziglyph").Normalizer; +const Data = @import("Normalizer").Data; const norm = @import("Normalizer"); pub fn main() !void { + var args_iter = std.process.args(); + _ = args_iter.skip(); + const in_path = args_iter.next() orelse return error.MissingArg; + var gpa = std.heap.GeneralPurposeAllocator(.{}){}; defer _ = gpa.deinit(); const allocator = gpa.allocator(); - const input = try std.fs.cwd().readFileAlloc(allocator, "data/lang_mix.txt", std.math.maxInt(u32)); + const input = try std.fs.cwd().readFileAlloc(allocator, in_path, std.math.maxInt(u32)); defer allocator.free(input); - var n = try norm.init(allocator); + var data = try Data.init(allocator); + defer data.deinit(); + + var n = try norm.init(allocator, &data); defer n.deinit(); + // var n = try norm.init(allocator); + // defer n.deinit(); - // var iter = GraphemeIterator.init(input); + // var iter = GraphemeIterator.init(input, &data); + // defer iter.deinit(); // var iter = CodePointIterator{ .bytes = input }; var iter = std.mem.splitScalar(u8, input, '\n'); @@ -33,7 +51,7 @@ pub fn main() !void { // while (iter.next()) |cp| result += codePointWidth(@intCast(cp.code)); // while (iter.next()) |_| result += 1; - // while (iter.next()) |line| result += strWidth(line); + // while (iter.next()) |line| result += strWidth(line, &data); while (iter.next()) |line| { var nfc = try n.nfc(allocator, line); result += nfc.slice.len; -- cgit v1.2.3