1:- module(
2 csv_ext,
3 [
4 csv_named_row/2, 5 csv_named_row/3, 6 csv_row/2, 7 csv_row/3 8 ]
9).
15:- use_module(library(csv)). 16:- use_module(library(dict)). 17:- use_module(library(pairs)).
32csv_named_row(In, Row) :-
33 csv_named_row(In, Row, options{}).
34
35
36csv_named_row(In, Row, Options1) :-
37 merge_dicts(options{convert: false}, Options1, Options2),
38 ( dict_select(header, Options2, Options3, Keys)
39 -> csv:csv_options(Options, Options3)
40 ; csv:csv_options(Options, Options2),
41 csv:csv_read_row(In, Header, Options),
42 compound_name_arguments(Header, row, Keys)
43 ),
44 csv_row_(In, Values, Options),
45 pairs_keys_values(Row, Keys, Values).
52csv_row(In, Row) :-
53 csv_row(In, Row, []).
54
55csv_row(In, Row, Options1) :-
56 csv:csv_options(Options2, Options1),
57 csv_row_(In, Row, Options2).
58
59
60
61
62
64
65csv_row_(In, Row, Options) :-
66 repeat,
67 csv:csv_read_row(In, Data, Options),
68 (Data == end_of_file -> !, fail ; compound_name_arguments(Data, row, Row))
Enhanced CSV support
*/