:- use_module(library(csv)).  % csv:make_csv_options/3, csv:default_separator/3.

/**  mtx_options_csv( +Mopts, +File, -Copts, -Ropts ).

Separate mtx options Mopts to Csv accepted options and everything else (Ropts).

File is needed for guessing a separator value if there is not one given as an option.

==
?- mtx_options_csv( [match(false)], Copts, Ropts ).
==

@author nicos angelopoulos
@version  0.1 2018/11/12

*/

mtx_options_csv( Options, File, Copts, Ropts ) :-
    ( select_option(sep(MtxSep),Options,Options0) ->
                        mtx_sep( MtxSep, CsvSep ),
                        Options1 = [separator(CsvSep)|Options0]
                        ;     
                        csv:default_separator( File, Options, Options1 )
    ),
    select_option( match(MatchPrv), Options1, Options2, _ ),
    ( var(MatchPrv) -> Match = true; Match = MatchPrv ),
    csv:make_csv_options([match_arity(Match)|Options2], Copts, Ropts ).