This file is primarily designed to support running Prolog applications
over the web. It provides a replacement for write_term/2 which renders
terms as structured HTML.
term(@Term, +Options)// is det- Render a Prolog term as a structured HTML tree. Options are
passed to write_term/3. In addition, the following options are
processed:
- format(+Format)
- Used for atomic values. Typically this is used to
render a single value.
- emit(:Closure)
- Call
call(Closure, HTML)
// rather than html//1 to emit the
result.
- To be done
- - Cyclic terms.
- - Attributed terms.
- - Portray
- - Test with Ulrich's write test set.
- - Deal with numbervars and canonical.
emit(:HTML, +Options)// is det[private]- Support the option
emit(Closure)
to call call(Closure, HTML)
for
emitting the result rather than html//1.
any(@Term, +Options:dict)// is det[private]- Emit an arbitrary Prolog Term as HTML controlled by Options.
@arg Options is a dict.
compound(+Compound, +Options)// is det[private]- Process a compound term.
arg_options(+Options, -OptionsOut) is det[private]
arg_options(+Options, +Extra, -OptionsOut) is det[private]- Increment depth in Options.
args(+Arg0, +Arity, +Compound, +Options)//[private]- Emit arguments of a compound term.
list(+List, +Options)//[private]- Emit a list. The List may have an unbound tail.
is_op1(+Name, -Type, -Priority, -ArgPriority, +Options) is semidet[private]- True if Name is an operator taking one argument of Type.
operator_module(-Module, +Options) is det[private]- Find the module for evaluating operators.
op1(+Type, +Pri, +Term, +ArgPri, +Options)// is det[private]
op2(+Pri, +Term, +Type, +LeftPri, +RightPri, +Options)// is det[private]
op_arg(+Term, +Options)// is det[private]
embrace(+HTML, +Options)//[private]- Place parenthesis around HTML with a DOM that allows to easily
justify the height of the parenthesis.
- space(@T1, @T2, +C1, +C2, +Options)//[private]
- Emit a space if omitting a space between T1 and T2 would cause
the two terms to join.
end_code_type(+Term, +Class, -Type, +Options) is det[private]- True when code is the first/last character code that is emitted by
printing Term using Options.
Options.side
is either left
or
right
.
dict(+Term, +Options)//[private]
primitive(+Term, -Class) is semidet[private]- True if Term is a primitive term, rendered using the CSS
class Class.
primitive_class(+Class0, +Value, -String, -Class) is det[private]- Fixup the CSS class for lexical variations. Used to find
quoted atoms.
finalize_term(+Term, +Dict)// is det[private]- Handle the
full_stop(Bool)
and nl(Bool)
options.
blob_rendering(+BlobType, +Blob, +WriteOptions)// is semidet[multifile]- Hook to render blob atoms as HTML. This hook is called whenever
a blob atom is encountered while rendering a compound term as
HTML. The blob type is provided to allow efficient indexing
without having to examine the blob. If this predicate fails, the
blob is rendered as an HTML SPAN with class 'pl-blob' containing
BlobType as text.