home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / c / c2man-2.0pl33.lha / c2man-2.0 / html.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-01-24  |  4.0 KB  |  290 lines

  1. /* $Id: html.c,v 2.0.1.1 1994/09/23 08:20:46 greyham Exp $
  2.  * functions for html style output.
  3.  */
  4. #include "c2man.h"
  5. #include "manpage.h"
  6. #include "output.h"
  7.  
  8. static int html_in_code = 0;
  9.  
  10. void html_char(c)
  11. const int c;
  12. {
  13.   switch (c)
  14.   {
  15.   case '<':
  16.     put_string("<");
  17.     break;
  18.   case '>':
  19.     put_string(">");
  20.     break;
  21.   case '&':
  22.     put_string("&");
  23.     break;
  24.   case '"':
  25.     put_string(""");
  26.     break;
  27.   default:
  28.     putchar(c);
  29.     break;
  30.   }
  31. }
  32.  
  33. void html_text(text)
  34. const char *text;
  35. {
  36.   while(*text)
  37.   {
  38.     html_char(*text++);
  39.   }
  40. }
  41.  
  42.  
  43. void html_comment()
  44. {
  45.   put_string("<!");
  46. }
  47.  
  48. void html_header(firstpage, input_files, grouped, name, section)
  49.    ManualPage         *firstpage;
  50.    int                 input_files;
  51.    boolean             grouped;
  52.    const char         *name;
  53.    const char         *section;
  54. {
  55.  
  56.   output_warning();
  57.   put_string("<header>\n");
  58.   put_string("<title>");
  59.   html_text(name);
  60.   printf("%s\n",firstpage->description);
  61.   put_string("</title>\n");
  62.   put_string("</header>\n");
  63.   put_string("<body>\n");
  64. }
  65.  
  66. void html_file_end()
  67. {
  68.   put_string("\n</body>\n");
  69. }
  70.  
  71. void html_dash()
  72. {
  73.   put_string("-");
  74. }
  75.  
  76. void html_section(name)
  77. const char         *name;
  78. {
  79.   put_string("<h1>");
  80.   html_text(name);
  81.   put_string("</h1>\n");
  82. }
  83.  
  84. void html_sub_section(name)
  85. const char *name;
  86. {
  87.   put_string("<h2>");
  88.   html_text(name);
  89.   put_string("</h2>");
  90. }
  91.  
  92. void html_break_line()
  93. {
  94.   if (!html_in_code)
  95.   {
  96.     put_string("<br>\n");
  97.   }
  98. }
  99.  
  100. void html_blank_line()
  101. {
  102.   if (!html_in_code)
  103.   {
  104.     put_string("<p>\n");
  105.   }
  106.   else
  107.   {
  108.     putchar('\n');
  109.   }
  110. }
  111.  
  112. void html_code_start()
  113. {
  114.   put_string("<pre>");
  115.   html_in_code = 1;
  116. }
  117.  
  118. void html_code_end()
  119. {
  120.   put_string("</pre>\n");
  121.   html_in_code = 0;
  122. }
  123.  
  124. void html_code(text)
  125. const char *text;
  126. {
  127.   html_code_start();
  128.   html_text(text);
  129.   html_code_end();
  130. }
  131.  
  132. void html_tag_list_start()
  133. {
  134.   put_string("<dl>");
  135. }
  136.  
  137. void html_tag_list_end()
  138. {
  139.   put_string("</dl>\n");
  140. }
  141.  
  142. void html_tag_entry_start()
  143. {   
  144.   put_string("<dt>\n");
  145. }   
  146.     
  147. void html_tag_entry_start_extra()
  148. {   
  149.   put_string("<dt>\n");
  150. }   
  151.     
  152. void html_tag_entry_end()
  153. {
  154.   put_string("<dd>\n");
  155. }
  156.  
  157. void html_tag_entry_end_extra(text)
  158. const char *text;
  159. {
  160.   put_string(" <em>");
  161.   put_string(text);
  162.   put_string("</em>)");
  163.   put_string("<dd>\n");
  164. }
  165.  
  166. void html_table_start(longestag)
  167. const char *longestag;
  168. {
  169.   put_string("<ul>");
  170. }
  171.  
  172. void html_table_entry(name, description)
  173. const char         *name;
  174. const char         *description;
  175. {
  176.   put_string("<li>");
  177. }
  178.  
  179. void html_table_end()
  180. {
  181.   put_string("</ul>");
  182. }
  183.  
  184. void html_indent()
  185. {
  186.   put_string("\t");
  187. }
  188.  
  189. void html_list_start()
  190. {
  191.   put_string("<ul>");
  192. }
  193.  
  194.  
  195. void html_list_end()
  196. {
  197.   put_string("</ul>");
  198. }
  199.  
  200. void html_list_entry(name)
  201. const char *name;
  202. {
  203.   put_string("<li>");
  204.   put_string(name);
  205.   put_string("\n");
  206. }
  207.  
  208. void html_list_separator()
  209. {
  210.   put_string(",\n");
  211. }
  212.  
  213. void html_include(filename)
  214. const char *filename;
  215. {
  216.   printf(".so %s\n", filename);
  217. }
  218.  
  219. void html_name(name)
  220. const char *name;
  221. {
  222.   if (name)
  223.     html_text(name);
  224.   else
  225.     html_section("NAME");
  226. }
  227.  
  228. void html_terse_sep()
  229. {
  230.   html_char(' ');
  231.   html_dash();
  232.   html_char(' ');
  233. }
  234.  
  235. void html_reference(name)
  236. const char *name;
  237. {
  238.   put_string("<a href=");
  239.   put_string(name);
  240.   put_string(".html>");
  241.   put_string(name);
  242.   put_string("</a>\n");
  243. }  
  244.  
  245. void html_emphasized(text)
  246. const char *text;
  247. {
  248.   put_string("<em>");
  249.   put_string(text);
  250.   put_string("</em>");
  251. }
  252.  
  253. struct Output       html_output =
  254. {
  255.   html_comment,
  256.   html_header,
  257.   html_dash,
  258.   html_section,
  259.   html_sub_section,
  260.   html_break_line,
  261.   html_blank_line,
  262.   html_code_start,
  263.   html_code_end,
  264.   html_code,
  265.   html_tag_list_start,
  266.   html_tag_list_end,
  267.   html_tag_entry_start,
  268.   html_tag_entry_start_extra,
  269.   html_tag_entry_end,
  270.   html_tag_entry_end_extra,
  271.   html_table_start,
  272.   html_table_entry,
  273.   html_table_end,
  274.   html_indent,
  275.   html_list_start,
  276.   html_list_entry,
  277.   html_list_separator,
  278.   html_list_end,
  279.   html_include,
  280.   html_file_end,
  281.   html_text,
  282.   html_char,
  283.   NULL,                /* html_parse_option */
  284.   dummy,            /* html_print_options */
  285.   html_name,
  286.   html_terse_sep,
  287.   html_reference,      
  288.   html_emphasized
  289.   };
  290.