8 let name_re = regexp "(\\*\\$[ \t]*\\([a-zA-Z0-9.-]*\\)[ \t]*\\*)";;
9 let subst_re = regexp "[<>&'%]";;
11 let begin_entity name =
12 "<!ENTITY " ^ name ^ " '";;
20 let within_entity = ref false in
23 let line = read_line() in
24 if string_match name_re line 0 then begin
25 let name = matched_group 1 line in
26 if !within_entity then
27 text := !text ^ "\n" ^ end_entity();
28 within_entity := false;
29 if name <> "-" then begin
30 text := !text ^ begin_entity name;
35 if !within_entity then begin
37 global_substitute subst_re
39 let s' = matched_group 0 s in
49 text := !text ^ "\n" ^ line'
53 if !within_entity then
54 text := !text ^ "\n" ^ end_entity();