1:- module(st_escape, [
    2    st_write_escape/2     3]).
   15st_write_escape(Stream, Text):-
   16    string(Text), !,
   17    string_codes(Text, Codes),
   18    st_write_codes(Codes, Stream).
   19
   20st_write_escape(Stream, Text):-
   21    atom(Text), !,
   22    atom_codes(Text, Codes),
   23    st_write_codes(Codes, Stream).
   24
   25st_write_escape(Stream, Text):-
   26    number(Text), !,
   27    write(Stream, Text).
   28
   31
   32st_write_escape(Stream, Text):-
   33    term_string(Text, String),
   34    string_codes(String, Codes),
   35    st_write_codes(Stream, Codes).
   36
   37st_write_codes([0'<|Codes], Stream):- !,
   38    write(Stream, '<'),
   39    st_write_codes(Codes, Stream).
   40
   41st_write_codes([0'>|Codes], Stream):- !,
   42    write(Stream, '>'),
   43    st_write_codes(Codes, Stream).
   44
   45st_write_codes([0'&|Codes], Stream):- !,
   46    write(Stream, '&'),
   47    st_write_codes(Codes, Stream).
   48
   49st_write_codes([0'\'|Codes], Stream):- !,
   50    write(Stream, '''),
   51    st_write_codes(Codes, Stream).
   52
   53st_write_codes([0'"|Codes], Stream):- !,
   54    write(Stream, '"'),
   55    st_write_codes(Codes, Stream).
   56
   57st_write_codes([Code|Codes], Stream):- !,
   58    put_code(Stream, Code),
   59    st_write_codes(Codes, Stream).
   60
   61st_write_codes([], _)
 
HTML escaping
Escapes symbols that have special meaning in HTML. */