1:- module( lib_mkdoc, [lib_mkdoc/0,lib_mkdoc/1] ). 2 3:- dynamic( lib_mkdoc:loaded/1 ). 4:- dynamic( lib_mkdoc:lib_index/5 ). 5 6lib_mkdoc :- 7 lib_mkdoc( '.' ).
:- asserta( library_directory('/usr/local/users/nicos/local/git/lib/swipl-7.5.1/pack/lib/prolog/mkdoc') )
.
:- use_module( '/usr/local/users/nicos/local/git/lib/swipl-7.5.1/pack/lib/prolog/mkdoc/lib' )
.
*/
17lib_mkdoc( DirIn ) :- 18 absolute_file_name( DirIn, Dir, [file_type(directory)] ), 19 working_directory( Old, Dir ), 20 directory_file_path( _LibRoot, Pack, Dir ), 21 directory_file_path( Dir, prolog, PrologD ), 22 file_name_extension( Pack, pl, PackF ), 23 directory_file_path( PrologD, PackF, AbsPackF ), 24 % 25 directory_file_path( doc, PackF, DocF ), 26 % shell( 'ln -s ../src doc/src' ), 27 open( DocF, write, Out ), 28 open( AbsPackF, read, In ), 29 read( In, (:- module(Pack,Exports)) ), 30 portray_clause( Out, (:- module(Pack,Exports)) ), 31 directory_file_path( Dir, src, SrcD ), 32 directory_file_path( SrcD, 'LibIndex.pl', SrcLib ), 33 ( exists_file(SrcLib) -> 34 ensure_loaded( lib_mkdoc:SrcLib ), 35 listing( lib_mkdoc:lib_index/5 ) 36 ; 37 true 38 ), 39 set_prolog_flag( verbose_load, full ), 40 % asserta( lib_mkdoc:loc(Dir,Out) ), 41 absolute_file_name( pack('lib/prolog/mkdoc'), Mkdoc, [file_type(directory)] ), 42 % asserta( library_directory(Mkdoc) ), 43 % use_module( library(lib) ), 44 % absolute_file_name( pack('lib/prolog/mkdoc/lib.pl'), LibPl, [file_errors(fail),access(exist)] ), 45 % use_module( LibPl ), 46 % export( lib_mkdoc:lib/1 ), 47 % import( Pack:lib/1 ), 48 % spy( lib:lib/1 ), 49 % ensure_loaded( AbsPackF ), 50 nl( Out ), 51 portray_clause( Out, (:- assert(user:library_directory(Mkdoc))) ), 52 directory_file_path( Mkdoc, lib, MkLib ), 53 portray_clause( Out, (:- use_module(MkLib)) ), 54 portray_clause( Out, (:- assert(lib:doc_module(Pack))) ), 55 nl( Out ), 56 % :- use_module( '/usr/local/users/nicos/local/git/lib/swipl-7.5.1/pack/lib/prolog/mkdoc/lib' ). 57 nl( Out ), 58 read( In, Term ), 59 lib_mkdoc_stream( Term, In, Locals ), 60 % lib_mkdoc_stream( Term, In, Out ), 61 close( In ), 62 % close( Out ), 63 64 % open( DocF, append, OutA ), % make sure we get the docs in the file too 65 open( AbsPackF, read, InA ), 66 read( InA, _ModDfn ), 67 copy_stream_data( InA, Out ), 68 close( InA ), 69 % close( OutA ), 70 lib_mkdoc_stream_locals( Locals, Out ), 71 nl( Out ), portray_clause( Out, (:- retractall(lib:doc_module(_))) ), nl( Out ), 72 close( Out ), 73 74 catch( ensure_loaded(DocF), Caught, (write(caught(Caught)),nl) ), 75 doc_save( DocF, [doc_root('doc/html')] ), 76 % 77 working_directory( _, Old ). 78 79lib_mkdoc_stream( end_of_file, _In, [] ). 80lib_mkdoc_stream( Term, In, Locs ) :- 81 ( Term = (:- lib(Pn/Pa)) -> Locs = [Pn/Pa|Ls] ; Locs = Ls ), 82 catch( read( In, Next ), _, Next = errored ), 83 lib_mkdoc_stream( Next, In, Ls ). 84 85 86lib_mkdoc_stream_locals( [], _Out ). 87lib_mkdoc_stream_locals( [Pn/Pa|T], Out ) :- 88 lib_mkdoc:lib_index( Pn, Pa, _, _, File ), 89 directory_file_path( src, File, SrcFile ), 90 file_name_extension( SrcFile, pl, RelF ), 91 exists_file( RelF ), 92 lib_mkdoc_file( RelF, Out ), 93 !, 94 lib_mkdoc_stream_locals( T, Out ). 95lib_mkdoc_stream_locals( [H|T], Out ) :- 96 write( failed_to_locate_sources_for_local(H) ), nl, 97 lib_mkdoc_stream_locals( T, Out ). 98 99lib_mkdoc_file( RelF, _Out ) :- 100 lib_mkdoc:loaded( RelF ), 101 !. 102lib_mkdoc_file( RelF, Out ) :- 103 open( RelF, read, RelIn ), 104 copy_stream_data( RelIn, Out ), 105 close( RelIn ), 106 asserta( lib_mkdoc:loaded( RelF ) )