Skip to content

Commit 43b8cc8

Browse files
authored
encoding.csv: add a new utility fn new_reader_from_file/2 (#20530)
1 parent 2f58ac3 commit 43b8cc8

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

vlib/encoding/csv/utils.v

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// Copyright (c) 2019-2024 Alexander Medvednikov. All rights reserved.
2+
// Use of this source code is governed by an MIT license
3+
// that can be found in the LICENSE file.
4+
module csv
5+
6+
import os
7+
8+
// new_reader_from_file create a csv reader from a file
9+
pub fn new_reader_from_file(csv_file_path string, config ReaderConfig) !&Reader {
10+
csv_file_content := os.read_file(csv_file_path)!
11+
return new_reader(csv_file_content, config)
12+
}

vlib/encoding/csv/utils_test.v

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// Copyright (c) 2019-2024 Alexander Medvednikov. All rights reserved.
2+
// Use of this source code is governed by an MIT license
3+
// that can be found in the LICENSE file.
4+
module csv
5+
6+
import os
7+
8+
fn test_new_reader_from_file() {
9+
test_file_path_for_reader := os.join_path(os.temp_dir(), 'test_new_reader_from_file.csv')
10+
11+
text := 'id,bonus,amount,yes\n1,bomb,1,true\n2,rocket,1,false,\n3,lightning,2,2\n'
12+
os.write_file(test_file_path_for_reader, text)!
13+
14+
mut reader := new_reader_from_file(test_file_path_for_reader)!
15+
mut writer := new_writer()
16+
17+
for {
18+
row := reader.read() or { break }
19+
writer.write(row) or { panic(err) }
20+
}
21+
22+
assert text == writer.str()
23+
24+
os.rm(test_file_path_for_reader)!
25+
}

0 commit comments

Comments
 (0)