From e5857e217f0a01d95581464d52c1e4aa822ccc4f Mon Sep 17 00:00:00 2001 From: Meghan Date: Wed, 18 Nov 2020 14:13:01 -0800 Subject: [PATCH] add get_string_array to yaml.mapping --- src/util/modfile.zig | 24 ++---------------------- src/util/yaml.zig | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 22 deletions(-) diff --git a/src/util/modfile.zig b/src/util/modfile.zig index c029a6ba062b71a35e917262b83fb1724cf5b7fb..89930a8778f1b0fc8f2c6d3a59938ad7c7f22541 100644 --- a/src/util/modfile.zig +++ b/src/util/modfile.zig @@ -31,26 +31,6 @@ pub const ModFile = struct { const name = doc.mapping.get("name").?.string; const main = doc.mapping.get("main").?.string; - const cinclude_list = &std.ArrayList([]const u8).init(alloc); - if (doc.mapping.get("c_include_dirs")) |val| { - if (val == .sequence) { - for (val.sequence) |item, i| { - u.assert(item == .string, "modfile: {}[{}] is not a string", .{"c_include_dirs", i}); - try cinclude_list.append(item.string); - } - } - } - - const csrc_list = &std.ArrayList([]const u8).init(alloc); - if (doc.mapping.get("c_source_files")) |val| { - if (val == .sequence) { - for (val.sequence) |item, i| { - u.assert(item == .string, "modfile: {}[{}] is not a string", .{"c_source_files", i}); - try csrc_list.append(item.string); - } - } - } - const dep_list = &std.ArrayList(u.Dep).init(alloc); if (doc.mapping.get("dependencies")) |dep_seq| { if (dep_seq == .sequence) { @@ -71,8 +51,8 @@ pub const ModFile = struct { .alloc = alloc, .name = name, .main = main, - .c_include_dirs = cinclude_list.items, - .c_source_files = csrc_list.items, + .c_include_dirs = try doc.mapping.get_string_array(alloc, "c_include_dirs"), + .c_source_files = try doc.mapping.get_string_array(alloc, "c_source_files"), .deps = dep_list.items, }; } diff --git a/src/util/yaml.zig b/src/util/yaml.zig index 444041278b3425f4dc2c0882f8023d57b91b2d87..b4be65cd226014ca6f8078424cb7c1e30e7c5b07 100644 --- a/src/util/yaml.zig +++ b/src/util/yaml.zig @@ -43,6 +43,21 @@ pub const Mapping = struct { } return null; } + + pub fn get_string_array(self: Mapping, alloc: *std.mem.Allocator, k: []const u8) ![][]const u8 { + const list = &std.ArrayList([]const u8).init(alloc); + if (self.get(k)) |val| { + if (val == .sequence) { + for (val.sequence) |item, i| { + if (item != .string) { + continue; + } + try list.append(item.string); + } + } + } + return list.items; + } }; // -- 2.54.0