Author: tpalsulich
Date: Thu Jul 17 16:37:52 2014
New Revision: 1611402

URL: http://svn.apache.org/r1611402
Log:
Fix for JRIA issue TIKA-411, generate list list of supported types 
automatically.

Modified:
    tika/trunk/CHANGES.txt
    tika/trunk/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java

Modified: tika/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/tika/trunk/CHANGES.txt?rev=1611402&r1=1611401&r2=1611402&view=diff
==============================================================================
--- tika/trunk/CHANGES.txt (original)
+++ tika/trunk/CHANGES.txt Thu Jul 17 16:37:52 2014
@@ -103,6 +103,9 @@ Release 1.5 - 02/04/2014
   * CLI: TikaCLI now escapes invalid filename characters as hex
     characters (TIKA-1078).
 
+  * CLI: TikaCLI now has another option: --list-parser-details-apt, which 
outputs the list of 
+    supported parsers in APT format. This is used to generate the list on the 
formats page.
+
 Release 1.4 - 06/15/2013
 
   * Removed a test HTML file with a poorly chosen GPL text in it (TIKA-1129).

Modified: tika/trunk/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java
URL: 
http://svn.apache.org/viewvc/tika/trunk/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java?rev=1611402&r1=1611401&r2=1611402&view=diff
==============================================================================
--- tika/trunk/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java 
(original)
+++ tika/trunk/tika-app/src/main/java/org/apache/tika/cli/TikaCLI.java Thu Jul 
17 16:37:52 2014
@@ -327,13 +327,16 @@ public class TikaCLI {
             TikaGUI.main(new String[0]);
         } else if (arg.equals("--list-parser") || 
arg.equals("--list-parsers")) {
             pipeMode = false;
-            displayParsers(false);
+            displayParsers(false, false);
         } else if (arg.equals("--list-detector") || 
arg.equals("--list-detectors")) {
            pipeMode = false;
            displayDetectors();
         } else if (arg.equals("--list-parser-detail") || 
arg.equals("--list-parser-details")) {
             pipeMode = false;
-            displayParsers(true);
+            displayParsers(true, false);
+        } else if (arg.equals("--list-parser-detail-apt") || 
arg.equals("--list-parser-details-apt")) {
+            pipeMode = false;
+            displayParsers(true, true);
         } else if(arg.equals("--list-met-models")){
             pipeMode = false;
             displayMetModels();
@@ -457,7 +460,9 @@ public class TikaCLI {
         out.println("    --list-parsers");
         out.println("         List the available document parsers");
         out.println("    --list-parser-details");
-        out.println("         List the available document parsers, and their 
supported mime types");
+        out.println("         List the available document parsers and their 
supported mime types");
+        out.println("    --list-parser-details-apt");
+        out.println("         List the available document parsers and their 
supported mime types in apt format.");
         out.println("    --list-detectors");
         out.println("         List the available document detectors");
         out.println("    --list-met-models");
@@ -528,26 +533,33 @@ public class TikaCLI {
      * If a parser is a composite parser, it will list the
      * sub parsers and their mime-types.
      */
-    private void displayParsers(boolean includeMimeTypes) {
-        displayParser(parser, includeMimeTypes, 0);
+    private void displayParsers(boolean includeMimeTypes, boolean 
aptListFormat) {
+        displayParser(parser, includeMimeTypes, aptListFormat, 3);
     }
      
-    private void displayParser(Parser p, boolean includeMimeTypes, int i) {
+    private void displayParser(Parser p, boolean includeMimeTypes, boolean 
apt, int i) {
         boolean isComposite = (p instanceof CompositeParser);
         String name = (p instanceof ParserDecorator) ?
                       ((ParserDecorator) 
p).getWrappedParser().getClass().getName() :
                       p.getClass().getName();
-        System.out.println(indent(i) + name + (isComposite ? " (Composite 
Parser):" : ""));
-        if (includeMimeTypes && !isComposite) {
-            for (MediaType mt : p.getSupportedTypes(context)) {
-                System.out.println(indent(i+2) + mt);
+        if (apt){
+            name = name.substring(0, name.lastIndexOf(".") + 1) + "{{{./api/" 
+ name.replace(".", "/") + "}" + name.substring(name.lastIndexOf(".") + 1) + 
"}}";
+        }
+        if ((apt && !isComposite) || !apt) {    // Don't display Composite 
parsers in the apt output.
+            System.out.println(indent(i) + ((apt) ? "* " : "") + name + 
(isComposite ? " (Composite Parser):" : ""));
+            if (apt) System.out.println();
+            if (includeMimeTypes && !isComposite) {
+                for (MediaType mt : p.getSupportedTypes(context)) {
+                    System.out.println(indent(i + 3) + ((apt) ? "* " : "") + 
mt);
+                    if (apt) System.out.println();
+                }
             }
         }
         
         if (isComposite) {
             Parser[] subParsers = 
sortParsers(invertMediaTypeMap(((CompositeParser) p).getParsers()));
             for(Parser sp : subParsers) {
-                displayParser(sp, includeMimeTypes, i+2);
+                displayParser(sp, includeMimeTypes, apt, i + ((apt) ? 0 : 3)); 
 // Don't indent for Composites in apt.
             }
         }
     }


Reply via email to