sv_teste :-
open("output.txt",write,Out),
write(Out,'Age(Peter,30)'),
write(Out,'Skin(Smith,Black).'),
close(Out).
sc(NomeArq,LS,LP) :-
open(NomeArq,write,Arq),
sv_lista_elementos(Arq,LS,LP),
close(Arq).
sv_lista_elementos(_,[],_) :- !.
sv_lista_elementos(Arq,[S|RS],LP) :-
write(S), sn(S,SN), write(Arq,SN), sv_lista_propriedades(Arq,S,LP), write("\n"), write(Arq,"\n"), sv_lista_elementos(Arq,RS,LP).
sv_lista_propriedades(_,_,[]) :- !.
sv_lista_propriedades(Arq,S,[P|RP]) :-
val(P,S,V), write(","), write(V), write(Arq,","), write(Arq,V), sv_lista_propriedades(Arq,S,RP).
sformat(Arq,S,V) :-
format(S,V), format(Arq,S,V).
% --------------------------------------------------------------
% salvar json lista de listas de propriedades dos elementos
% --------------------------------------------------------------
sjl(NomeArq,NomeObj,LS,LP) :-
open(NomeArq,write,Arq), %
sformat(Arq,"~s = [\n",[NomeObj]),
% format("~s = [\n",[NomeObj]), %
% format(Arq,"~s = [\n",[NomeObj]), %
sjl_lista_elementos(Arq,LS,LP), %
format("]",[NomeObj]), %
format(Arq,"]",[NomeObj]), %
close(Arq). %
sjl_lista_elementos(_,[],_) :- !.
sjl_lista_elementos(Arq,[S|RS],LP) :-
sn(S,SN), sformat(Arq,' ["~s"', [SN]), sjl_lista_propriedades(Arq,S,LP), sformat(Arq,'],\n', []), sjl_lista_elementos(Arq,RS,LP).
sjl_lista_propriedades(_,_,[]) :- !.
sjl_lista_propriedades(Arq,S,[P|RP]) :-
val(P,S,V), write(',"'), write(V), write('"'), write(Arq,',"'), write(Arq,V), write(Arq,'"'), sjl_lista_propriedades(Arq,S,RP).
% ----------------------------------------------------------------------------
% salvar json lista de objetos com nome e valor de propriedades dos elementos
% ----------------------------------------------------------------------------
sjn(NomeArq,NomeObj,LS,LP) :-
open(NomeArq,write,Arq), %
sformat(Arq,"~s = [\n",[NomeObj]), %
sjn_lista_elementos(Arq,LS,LP), %
sformat(Arq,"]",[NomeObj]), %
close(Arq). %
sjn_lista_elementos(_,[],_) :- !.
sjn_lista_elementos(Arq,[S|RS],LP) :-
sn(S,SN), sformat(Arq,'{sn:"~s"',[SN]), sjn_lista_propriedades(Arq,S,LP), write("},\n"), write(Arq,"},\n"), sjn_lista_elementos(Arq,RS,LP).
sjn_lista_propriedades(_,_,[]) :- !.
sjn_lista_propriedades(Arq,S,[P|RP]) :-
val(P,S,V), sformat(Arq,',~s:"',[P]), write(V), write(Arq,V), sformat(Arq,'"',[P]), sjn_lista_propriedades(Arq,S,RP).