mirror of
https://github.com/Tilo-K/csvu.git
synced 2026-01-09 16:11:02 +00:00
feat: add validation
This commit is contained in:
@@ -57,8 +57,8 @@ const CsvFile = struct {
|
|||||||
entries: std.ArrayList(std.ArrayList([]const u8)),
|
entries: std.ArrayList(std.ArrayList([]const u8)),
|
||||||
|
|
||||||
pub fn isValid(self: CsvFile) bool {
|
pub fn isValid(self: CsvFile) bool {
|
||||||
const colNum = self.header.items.len();
|
const colNum = self.header.items.len;
|
||||||
for (self.entries) |entry| {
|
for (self.entries.items) |entry| {
|
||||||
if (entry.items.len != colNum) {
|
if (entry.items.len != colNum) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -68,7 +68,7 @@ const CsvFile = struct {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn loadFile(filepath: []const u8) !void {
|
pub fn loadFile(filepath: []const u8) !CsvFile {
|
||||||
const alloc = std.heap.page_allocator;
|
const alloc = std.heap.page_allocator;
|
||||||
var file = try std.fs.cwd().openFile(filepath, .{});
|
var file = try std.fs.cwd().openFile(filepath, .{});
|
||||||
defer file.close();
|
defer file.close();
|
||||||
@@ -101,6 +101,8 @@ pub fn loadFile(filepath: []const u8) !void {
|
|||||||
}
|
}
|
||||||
_ = try entries.append(entr);
|
_ = try entries.append(entr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return CsvFile{ .entries = entries, .header = headerList };
|
||||||
}
|
}
|
||||||
|
|
||||||
test "Determine delimiter" {
|
test "Determine delimiter" {
|
||||||
|
|||||||
@@ -22,7 +22,12 @@ pub fn main() !void {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try csv.loadFile(filepath);
|
var file = try csv.loadFile(filepath);
|
||||||
|
const valid = file.isValid();
|
||||||
|
if (valid) {
|
||||||
|
_ = try stdout.write("Csv is valid\n");
|
||||||
|
} else {
|
||||||
|
_ = try stdout.write("Csv is not valid\n");
|
||||||
|
}
|
||||||
_ = try bw.flush();
|
_ = try bw.flush();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user