From 7f55061a590ac695920dc53cffa826c736aede92 Mon Sep 17 00:00:00 2001 From: Cedric Priscal Date: Wed, 18 Mar 2015 19:48:18 -0700 Subject: [PATCH] Add an option to specify the order of the packages. --- .../java/org/stfm/texdoclet/HelpOutput.java | 4 +++ .../java/org/stfm/texdoclet/TeXDoclet.java | 31 +++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/src/main/java/org/stfm/texdoclet/HelpOutput.java b/src/main/java/org/stfm/texdoclet/HelpOutput.java index 24c9dc9..f143f9a 100644 --- a/src/main/java/org/stfm/texdoclet/HelpOutput.java +++ b/src/main/java/org/stfm/texdoclet/HelpOutput.java @@ -73,6 +73,10 @@ public class HelpOutput { .println("-tablescale Scale factor to specify width of tables. Default value is 0.9."); System.err .println("-createpdf Creates .pdf file from the .tex output file by using pdflatex tool."); + System.err + .println("-packageorder ,,..."); + System.err + .println(" Use a specific package order."); } } diff --git a/src/main/java/org/stfm/texdoclet/TeXDoclet.java b/src/main/java/org/stfm/texdoclet/TeXDoclet.java index 2099513..946ed0f 100755 --- a/src/main/java/org/stfm/texdoclet/TeXDoclet.java +++ b/src/main/java/org/stfm/texdoclet/TeXDoclet.java @@ -251,6 +251,7 @@ public class TeXDoclet extends Doclet { static String introFile = null; static double tableWidthScale = 0.9; static boolean createPdf = false; + static String package_order = null; static final String REPLACE_OUT = "_replace_data_"; static final String REPLACE_TITLE = "_replace_title_"; static final String HTML_PDF_WRAPPER = "" @@ -386,6 +387,8 @@ public class TeXDoclet extends Doclet { return 2; } else if (option.equals("-createpdf")) { return 1; + } else if (option.equals("-packageorder")) { + return 2; } System.out.println("unknown TeXDoclet option " + option); @@ -492,6 +495,8 @@ public class TeXDoclet extends Doclet { tableWidthScale = Double.parseDouble(args[i][1]); } else if (args[i][0].equals("-createpdf")) { createPdf = true; + } else if (args[i][0].equals("-packageorder")) { + package_order = args[i][1]; } if (sectionLevelMax != null @@ -568,6 +573,32 @@ public class TeXDoclet extends Doclet { ClassDoc[] cls = root.classes(); PackageDoc[] specifiedPackages = root.specifiedPackages(); + + // Sort the packages + if (package_order != null) { + String[] pkg = package_order.split(","); + for (int i = 0; i < pkg.length; i++) { + // Search for pkg[i] in the specifiedPackages + int j; boolean found = false; + for (j = i; j < specifiedPackages.length; j++) { + if (specifiedPackages[j].name().equals(pkg[i])) { + found = true; + break; + } + } + if (!found) { + System.err.println("Package " + pkg + " not found, aborting."); + return false; + } + if (i != j) { + // specifiedPackages has to be reordered + PackageDoc swap = specifiedPackages[i]; + specifiedPackages[i] = specifiedPackages[j]; + specifiedPackages[j] = swap; + } + } + } + System.out.println("specifiedPackages : " + specifiedPackages.length); for (int i = 0; i < specifiedPackages.length; i++) { Package P = new Package(specifiedPackages[i].name(),