1!       TITLE   CVTHELP.TPU
2!       IDENT   01-001
3!
4!++
5! Copyright (c) 1990-2001 Info-ZIP.  All rights reserved.
6!
7! See the accompanying file LICENSE, version 2000-Apr-09 or later
8! (the contents of which are also included in zip.h) for terms of use.
9! If, for some reason, all these files are missing, the Info-ZIP license
10! also may be found at:  ftp://ftp.info-zip.org/pub/infozip/license.html
11!
12!++
13!
14!  Program:     CVTHELP.TPU
15!
16!  Author:      Hunter Goatley
17!
18!  Date:        January 12, 1992
19!
20!  Purpose:     Convert .HELP files to RUNOFF .RNH files.  Substitutes
21!               RUNOFF commands for tags imbedded in the .HELP file.
22!
23!  Calling sequence:
24!
25!       $ EDIT/TPU/NOJOURNAL/NODISPLAY/COMMAND=CVTHELP file.HELP
26!
27!  Modified by:
28!
29!       01-001          Hunter Goatley            7-FEB-2001 15:40
30!               Added <NEXT> for qualifier separators.
31!
32!       01-000          Hunter Goatley           12-JAN-1992 15:15
33!               Original version.
34!
35!--
36Procedure eve_convert_help
37Local   temp
38        ,x
39        ;
40
41   qualifier_level := 0;
42   hg$substitute_topic(current_buffer, "<MAIN>", ".indent-3", "1");
43   hg$substitute_topic(current_buffer, "<QUALIFIER>", ".sk;.indent-3", "");
44   hg$substitute_topic(current_buffer, "<TOPIC>", ".indent-3", "2");
45   hg$substitute_topic(current_buffer, "<SUBTOPIC>", ".indent-3", "3");
46   hg$substitute_topic(current_buffer, "<SUBSUBTOPIC>", ".indent-3", "4");
47   hg$substitute_comment(current_buffer,"<QUALIFIERS>",".indent-3;2 Qualifiers");
48   hg$substitute_comment(current_buffer,"<PARAMETER>",".indent-2");
49   hg$substitute_comment(current_buffer,"<PTEXT>",".lm+3");
50   hg$substitute_comment(current_buffer,"<TXETP>",".lm-3");
51   hg$substitute_comment(current_buffer,"<ETEXT>",".lm+4");
52   hg$substitute_comment(current_buffer,"<TXETE>",".lm-4");
53   hg$substitute_comment(current_buffer,"<INIT>",".noflags;.lm3;.rm70");
54   hg$substitute_comment(current_buffer,"<LITERAL>",".lm+4;.literal");
55   hg$substitute_comment(current_buffer,"<LARETIL>",".end literal;.lm-4");
56   hg$substitute_comment(current_buffer,"<LITERAL0>",".literal");
57   hg$substitute_comment(current_buffer,"<0LARETIL>",".end literal");
58   hg$substitute_comment(current_buffer,"<DOT1LIST>",'.list 1,"o"');
59   hg$substitute_comment(current_buffer,"<DOT0LIST>",'.list 0,"o"');
60   hg$substitute_comment(current_buffer,"<ENTRY>",".le");
61   hg$substitute_comment(current_buffer,"<TSIL>",".end list");
62   hg$substitute_comment(current_buffer,"<CENTER>",".center");
63   hg$substitute_comment(current_buffer,"<FORMAT>",".sk;.indent2");
64   hg$substitute_comment(current_buffer,"<NOTE>",".note");
65   hg$substitute_comment(current_buffer,"<ETON>",".end note");
66   hg$substitute_comment(current_buffer, LINE_BEGIN & LINE_END,".sk");
67   hg$substitute_comment(current_buffer, LINE_BEGIN & "|", "");
68   hg$substitute_comment(current_buffer,"<NEXT>",".br");
69
70EndProcedure;           ! eve_convert_help
71
72Procedure hg$substitute_comment (the_buffer, target, new)
73Local   temp
74        ,save_pos
75        ,x
76        ;
77  on_error;
78  endon_error;
79
80  save_pos := mark(none);
81  position(beginning_of(the_buffer));
82  loop
83        x := search(target, forward);
84        exitif x = 0;
85        position (x);
86        erase_character(length(x));
87        copy_text(new);
88  endloop;
89
90  position(save_pos);
91
92EndProcedure;           ! hg$substitute_comment
93
94Procedure hg$substitute_topic (the_buffer, target, new, level)
95Local   temp
96        ,save_pos
97        ,x
98        ;
99  on_error;
100  endon_error;
101
102  save_pos := mark(none);
103  position(beginning_of(the_buffer));
104  loop
105        x := search(target, forward);
106        exitif x = 0;
107        position (x);
108        erase_character(length(x));
109        move_vertical(-1);
110        if (length(current_line) = 0)
111        then copy_text("|");
112        endif;
113        move_vertical(1);
114        copy_text(".!------------------------------------------------------");
115        split_line;
116        copy_text(new);
117        move_horizontal(-current_offset);
118        move_vertical(1);
119        if level <> "" then
120                copy_text(level + " ");
121!       else
122!           if qualifier_level = 0
123!           then
124!               copy_text("2 Qualifiers");
125!               split_line; split_line;
126!               copy_text(new); split_line;
127!               qualifier_level := 1;
128!           endif;
129        endif;
130        move_horizontal(-current_offset);
131        move_vertical(1);
132        if length(current_line) = 0
133        then
134            if (target = "<MAIN>") OR (target = "<TOPIC>")
135                OR (target = "<SUBTOPIC>") or (target = "<SUBSUBTOPIC>")
136            then copy_text(".br");
137            else copy_text(".sk");
138            endif;
139        endif;
140  endloop;
141
142  position(save_pos);
143
144EndProcedure;           ! hg$substitute_topic
145
146!===============================================================================
147Procedure tpu$init_procedure
148Local   temp
149        ,orig_filespec
150        ,f
151        ;
152
153   on_error
154   endon_error;
155
156 !Prompt user for information
157
158  orig_filespec := get_info(command_line, "file_name");
159  if orig_filespec = ""
160  then
161        message("No .HELP file given");
162        quit;
163  endif;
164  f := file_parse(orig_filespec, ".HELP");              !Add .LIS ending
165
166    ! Create a buffer and window for editing
167
168  main_buf := create_buffer ("MAIN",f);
169  set (eob_text, main_buf, "[End of buffer]");
170
171  position (beginning_of(main_buf));
172
173  eve_convert_help;
174
175  f := file_parse(orig_filespec,"","",NAME);
176
177  write_file (main_buf, f+".RNH");
178
179 quit;
180EndProcedure;           !TPU$INIT_PROCEDURE
181
182tpu$init_procedure;
183