mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			141 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Java
		
	
	
	
| /* Copyright (C) 2001  Free Software Foundation
 | |
| 
 | |
|    This file is part of libgcj.
 | |
| 
 | |
| This software is copyrighted work licensed under the terms of the
 | |
| Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
 | |
| details.  */
 | |
| 
 | |
| import java.io.*;
 | |
| import com.sun.javadoc.*;
 | |
| 
 | |
| public class TexinfoDoclet
 | |
| {
 | |
|   static PrintStream outfile;
 | |
|   
 | |
|   public static int optionLength(String option) 
 | |
|   {
 | |
|     if (option.equals("-outfile")) 
 | |
|       return 2;
 | |
|     return 0;
 | |
|   }
 | |
| 
 | |
|   private static String replace (String s, String text, String replacement)
 | |
|   {
 | |
|     int i = s.indexOf (text);
 | |
|     while (i != -1)
 | |
|       {
 | |
| 	s = s.substring(0, i) + replacement + s.substring(i+text.length());
 | |
| 	i = s.indexOf (text);
 | |
|       }
 | |
|     
 | |
|     return s;
 | |
|   }
 | |
|   
 | |
|   private static String texify (String s)
 | |
|   {
 | |
|     if (s.indexOf('<') == -1)
 | |
|       return s;
 | |
|     
 | |
|     s = replace (s, "<code>", "@code{");
 | |
|     s = replace (s, "</code>", "}");
 | |
|     s = replace (s, "<ol>", "\n@itemize @bullet\n");
 | |
|     s = replace (s, "</ol>", "\n@end itemize\n");
 | |
|     s = replace (s, "<ul>", "\n@itemize @bullet\n");
 | |
|     s = replace (s, "</ul>", "\n@end itemize\n");
 | |
|     s = replace (s, "<li>", "\n@item\n");
 | |
|     s = replace (s, "</li>", "\n");
 | |
|     s = replace (s, "<p>", "\n\n");
 | |
|     
 | |
|     s = replace (s, "<CODE>", "@code{");
 | |
|     s = replace (s, "</CODE>", "}");
 | |
|     s = replace (s, "<OL>", "\n@itemize @bullet\n");
 | |
|     s = replace (s, "</OL>", "\n@end itemize\n");
 | |
|     s = replace (s, "<UL>", "\n@itemize @bullet\n");
 | |
|     s = replace (s, "</UL>", "\n@end itemize\n");
 | |
|     s = replace (s, "<LI>", "\n@item\n");
 | |
|     s = replace (s, "</LI>", "\n");
 | |
|     s = replace (s, "<P>", "\n\n");
 | |
|     
 | |
|     return s;
 | |
|   }
 | |
|   
 | |
|   private static void emitMethod (ClassDoc c, MethodDoc m)
 | |
|   {
 | |
|     outfile.print ("@deftypemethod " + c.typeName()
 | |
| 		   + " {" + m.modifiers()
 | |
| 		   + " " + m.returnType().typeName()
 | |
| 		   + "} " + m.name());
 | |
|     
 | |
|     outfile.print (" (");
 | |
|     Parameter p[] = m.parameters();
 | |
|     boolean first = true;
 | |
|     
 | |
|     for (int i = 0; i < p.length; i++)
 | |
|       {
 | |
| 	if (!first)
 | |
| 	  outfile.print (", ");
 | |
| 	outfile.print (p[i].typeName() 
 | |
| 		       + "@w{ }@var{"
 | |
| 		       + p[i].name()
 | |
| 		       + "}");
 | |
| 	first = false;
 | |
|       }
 | |
|     outfile.print (") ");
 | |
|     
 | |
|     ClassDoc exceptions[] = m.thrownExceptions();
 | |
|     if (exceptions.length > 0)
 | |
|       {
 | |
| 	outfile.print ("@*throws ");
 | |
| 	first = true;
 | |
| 	for (int i = 0; i < exceptions.length; i++)
 | |
| 	  {
 | |
| 	    if (!first)
 | |
| 	      outfile.print (", ");
 | |
| 	    outfile.print (exceptions[i].typeName());
 | |
| 	    first = false;
 | |
| 	  }
 | |
|       }
 | |
|     outfile.println ("");
 | |
|     
 | |
|     outfile.println (texify (m.commentText()));
 | |
|     
 | |
|     outfile.println ("@end deftypemethod");
 | |
|   }
 | |
|   
 | |
|   private static void emitClass (ClassDoc c)
 | |
|   {
 | |
|     MethodDoc[] methods = c.methods();
 | |
|     for (int i = 0; i < methods.length; i++)
 | |
|       {
 | |
| 	emitMethod (c, methods[i]);
 | |
|       }
 | |
|   }
 | |
|   
 | |
|   public static boolean start (RootDoc root)
 | |
|   {
 | |
|     String options[][] = root.options ();
 | |
|     
 | |
|     for (int i = 0; i < options.length; i++)
 | |
|       {
 | |
| 	try 
 | |
| 	  {
 | |
| 	    if (options[i][0].equals ("-outfile"))
 | |
| 	      {
 | |
| 		outfile = new PrintStream (new FileOutputStream (options[i][1]));
 | |
| 	      }
 | |
| 	  } catch (java.io.IOException e) {
 | |
| 	    System.err.println ("Can't write to file " + options[i][1]);
 | |
| 	    return false;
 | |
| 	  }
 | |
|       }
 | |
|     
 | |
|     ClassDoc[] classes = root.classes();
 | |
|     for (int i = 0; i < classes.length; i++)
 | |
|       {
 | |
| 	emitClass (classes[i]);
 | |
|       }
 | |
|     return true;
 | |
|   }
 | |
| }
 |