13
14
15:- module( pdt_manual_entry,
16 [ predicate_manual_entry/5 17 ]). 18
19:- if(current_prolog_flag(dialect, swi)). 20
21:- use_module(library(lists)). 23:- use_module(library(memfile)). 24:- use_module(library(quintus)). 25
27:- use_module(library(pldoc/doc_library)). 28:- use_module(library(explain)). 29:- use_module(library(help)). 30:- use_module(library(make)). 31:- use_module(library('pldoc')). 32:- use_module(library('pldoc/doc_html')). 34
35:- use_module(pdt_prolog_library(utils4modules)). 36
37
38
45predicate_manual_entry(Module, Pred,Arity,Content, IsDeprecated) :-
46 47 48 pldoc_process:doc_comment(Module:Pred/Arity,File:_,_Summary, Comment),
49 ( atomic(Comment),
50 sub_atom(Comment, _, _, _, '@deprecated')
51 -> IsDeprecated = true
52 ; IsDeprecated = false
53 ),
54 gen_html_for_pred_(File,Pred/Arity,Content),
55 !.
56
57predicate_manual_entry(_Module,_Pred,_Arity,'nodoc', _).
58
59gen_html_for_pred_(FileSpec,Functor/Arity,Html) :-
60 doc_file_objects(FileSpec, _File, Objects, FileOptions, [public_only(false)]),
61 member(doc(Signature,FilePos,Doc),Objects),
62 ( Functor/Arity=Signature
63 ; _Module:Functor/Arity=Signature
64 ),
65 !,
66 phrase(html([
67 \objects([doc(Functor/Arity,FilePos,Doc)], FileOptions)
68 ]),List),
71 with_output_to(atom(Html), print_html(List)).
80manual_entry(Pred,Arity,Content) :-
81 predicate(Pred,Arity,_,From,To),
82 !,
83 online_help:online_manual_stream(Manual),
84 new_memory_file(Handle),
85 open_memory_file(Handle, write, MemStream),
86 stream_position(Manual, _, '$stream_position'(From, 0, 0)),
87 Range is To - From,
88 online_help:copy_chars(Range, Manual, MemStream),
89 close(MemStream),
90 memory_file_to_atom(Handle,Content),
91 free_memory_file(Handle).
101
102:- else. 103
104predicate_manual_entry(_Module,_Pred,_Arity,'nodoc').
105
106:- endif.