| Did you know ... | Search Documentation: |
| pengines_io.pl -- Provide Prolog I/O for HTML clients |
This module redefines some of the standard Prolog I/O predicates to behave transparently for HTML clients. It provides two ways to redefine the standard predicates: using goal_expansion/2 and by redefining the system predicates using redefine_system_predicate/1. The latter is the preferred route because it gives a more predictable trace to the user and works regardless of the use of other expansion and meta-calling.
Redefining works by redefining the system predicates in the context of the pengine's module. This is configured using the following code snippet.
:- pengine_application(myapp).
:- use_module(myapp:library(pengines_io)).
pengines:prepare_module(Module, myapp, _Options) :-
pengines_io:pengine_bind_io_to_html(Module).
Using goal_expansion/2 works by rewriting the corresponding goals using goal_expansion/2 and use the new definition to re-route I/O via pengine_input/2 and pengine_output/1. A pengine application is prepared for using this module with the following code:
:- pengine_application(myapp).
:- use_module(myapp:library(pengines_io)).
myapp:goal_expansion(In,Out) :-
pengine_io_goal_expansion(In, Out).
pengine_writeln(+Term)
pengine_nl
pengine_tab(+N)
pengine_flush_output
pengine_write_term(+Term, +Options)write.
pengine_write(+Term) is det
pengine_writeq(+Term) is det
pengine_display(+Term) is det
pengine_print(+Term) is det
pengine_write_canonical(+Term) is det
pengine_format(+Format) is det
pengine_format(+Format, +Args) is det
pengine_listing is det
pengine_listing(+Spec) is det
user:message_hook(+Term, +Kind, +Lines) is semidet[multifile]
message_lines_to_html(+MessageLines, +Classes, -HTMLString) is det'prolog-message' and the given Classes.
send_html(+HTML) is det
binding_term(+Term, +Vars, +WriteOptions)// is semidet[multifile]
prolog_help:show_html_hook(+HTML)[multifile]
pengine_io_predicate(?Head)
pengine_bind_io_to_html(+Module)The following predicates are exported from this file while their implementation is defined in imported modules or non-module files loaded by this module.
pengine_write(+Term) is det
pengine_writeq(+Term) is det
pengine_display(+Term) is det
pengine_print(+Term) is det
pengine_write_canonical(+Term) is det
pengine_write(+Term) is det
pengine_writeq(+Term) is det
pengine_display(+Term) is det
pengine_print(+Term) is det
pengine_write_canonical(+Term) is det
pengine_write(+Term) is det
pengine_writeq(+Term) is det
pengine_display(+Term) is det
pengine_print(+Term) is det
pengine_write_canonical(+Term) is det
pengine_write(+Term) is det
pengine_writeq(+Term) is det
pengine_display(+Term) is det
pengine_print(+Term) is det
pengine_write_canonical(+Term) is det
pengine_format(+Format) is det
pengine_format(+Format, +Args) is det
pengine_listing is det
pengine_listing(+Spec) is detThe following predicates are exported, but not or incorrectly documented.