1 % (c) 2009-2019 Lehrstuhl fuer Softwaretechnik und Programmiersprachen,
2 % Heinrich Heine Universitaet Duesseldorf
3 % This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html)
4
5
6 :- module(tools_files,
7 [write_lines_to_file/2,
8 write_to_file/2,
9 write_to_utf8_file/2, write_to_utf8_file_or_user_output/2,
10 put_codes/2]).
11
12
13 :- use_module(module_information).
14
15 :- module_info(group,infrastructure).
16 :- module_info(description,'A few utilities on files seperated out from tools.pl to avoid cyclic module dependencies.').
17
18 write_lines_to_file(FILE,Lines) :-
19 lines_to_code_list(Lines,CodeList),
20 write_to_file(FILE,CodeList).
21
22 lines_to_code_list([],[]).
23 lines_to_code_list([Line|Lines],CodeList) :-
24 (number(Line) -> number_codes(Line,L); atom_codes(Line,L)),
25 append(L,[10],L1),
26 append(L1,RL,CodeList),
27 lines_to_code_list(Lines,RL).
28
29 write_to_utf8_file(FILE,CodesList) :-
30 open(FILE,write,S,[encoding('UTF-8')]),
31 put_codes(CodesList,S),
32 close(S).
33
34 write_to_utf8_file_or_user_output(user_output,CodesList) :- !,
35 put_codes(CodesList,user_output).
36 write_to_utf8_file_or_user_output(FILE,CodesList) :- write_to_utf8_file(FILE,CodesList).
37
38 write_to_file(FILE,CodesList) :-
39 open(FILE,write,S),
40 put_codes(CodesList,S),
41 close(S).
42
43 put_codes([],_).
44 put_codes([H|T],S) :- put_code(S,H), put_codes(T,S).