Skip to content

Commit

Permalink
fix: fix several issues
Browse files Browse the repository at this point in the history
  • Loading branch information
arnaudroques committed Mar 24, 2023
1 parent 003222a commit 47f2995
Show file tree
Hide file tree
Showing 10 changed files with 209 additions and 75 deletions.
80 changes: 78 additions & 2 deletions src/net/sourceforge/plantuml/Option.java
Original file line number Diff line number Diff line change
Expand Up @@ -138,44 +138,64 @@ public Option(String... arg) throws InterruptedException, IOException {
System.setProperty("java.awt.headless", "true");
} else if (s.equalsIgnoreCase("-tsvg") || s.equalsIgnoreCase("-svg")) {
setFileFormatOption(new FileFormatOption(FileFormat.SVG));

} else if (s.equalsIgnoreCase("-tsvg:nornd") || s.equalsIgnoreCase("-svg:nornd")) {
setFileFormatOption(new FileFormatOption(FileFormat.SVG));

} else if (s.equalsIgnoreCase("-thtml") || s.equalsIgnoreCase("-html")) {
setFileFormatOption(new FileFormatOption(FileFormat.HTML));

} else if (s.equalsIgnoreCase("-tscxml") || s.equalsIgnoreCase("-scxml")) {
setFileFormatOption(new FileFormatOption(FileFormat.SCXML));

} else if (s.equalsIgnoreCase("-txmi") || s.equalsIgnoreCase("-xmi")) {
setFileFormatOption(new FileFormatOption(FileFormat.XMI_STANDARD));

} else if (s.equalsIgnoreCase("-txmi:argo") || s.equalsIgnoreCase("-xmi:argo")) {
setFileFormatOption(new FileFormatOption(FileFormat.XMI_ARGO));

} else if (s.equalsIgnoreCase("-txmi:star") || s.equalsIgnoreCase("-xmi:star")) {
setFileFormatOption(new FileFormatOption(FileFormat.XMI_STAR));

} else if (s.equalsIgnoreCase("-teps") || s.equalsIgnoreCase("-eps")) {
setFileFormatOption(new FileFormatOption(FileFormat.EPS));

} else if (s.equalsIgnoreCase("-teps:text") || s.equalsIgnoreCase("-eps:text")) {
setFileFormatOption(new FileFormatOption(FileFormat.EPS_TEXT));

} else if (s.equalsIgnoreCase("-ttxt") || s.equalsIgnoreCase("-txt")) {
setFileFormatOption(new FileFormatOption(FileFormat.ATXT));

} else if (s.equalsIgnoreCase("-tutxt") || s.equalsIgnoreCase("-utxt")) {
setFileFormatOption(new FileFormatOption(FileFormat.UTXT));

} else if (s.equalsIgnoreCase("-braille") || s.equalsIgnoreCase("-tbraille")) {
setFileFormatOption(new FileFormatOption(FileFormat.BRAILLE_PNG));

} else if (s.equalsIgnoreCase("-png") || s.equalsIgnoreCase("-tpng")) {
setFileFormatOption(new FileFormatOption(FileFormat.PNG));

} else if (s.equalsIgnoreCase("-vdx") || s.equalsIgnoreCase("-tvdx")) {
setFileFormatOption(new FileFormatOption(FileFormat.VDX));

} else if (s.equalsIgnoreCase("-latex") || s.equalsIgnoreCase("-tlatex")) {
setFileFormatOption(new FileFormatOption(FileFormat.LATEX));

} else if (s.equalsIgnoreCase("-latex:nopreamble") || s.equalsIgnoreCase("-tlatex:nopreamble")) {
setFileFormatOption(new FileFormatOption(FileFormat.LATEX_NO_PREAMBLE));

} else if (s.equalsIgnoreCase("-base64") || s.equalsIgnoreCase("-tbase64")) {
setFileFormatOption(new FileFormatOption(FileFormat.BASE64));

} else if (s.equalsIgnoreCase("-pdf") || s.equalsIgnoreCase("-tpdf")) {
setFileFormatOption(new FileFormatOption(FileFormat.PDF));

} else if (s.equalsIgnoreCase("-darkmode")) {
setFileFormatOption(this.fileFormatOption.withColorMapper(ColorMapper.DARK_MODE));

} else if (s.equalsIgnoreCase("-overwrite")) {
OptionFlags.getInstance().setOverwrite(true);

} else if (s.equalsIgnoreCase("-output") || s.equalsIgnoreCase("-o")) {
i++;
if (i == arg.length)
Expand Down Expand Up @@ -243,12 +263,16 @@ else if (nb.matches("\\d+"))

} else if (s.equalsIgnoreCase("-failfast")) {
this.failfast = true;

} else if (s.equalsIgnoreCase("-failfast2")) {
this.failfast2 = true;

} else if (s.equalsIgnoreCase("-noerror")) {
this.noerror = true;

} else if (s.equalsIgnoreCase("-checkonly")) {
this.checkOnly = true;

} else if (s.equalsIgnoreCase("-theme")) {
i++;
if (i == arg.length)
Expand All @@ -263,15 +287,20 @@ else if (nb.matches("\\d+"))
initConfig(StringUtils.eventuallyRemoveStartingAndEndingDoubleQuote(arg[i]));
} else if (s.startsWith("-I")) {
initInclude(s.substring(2));

} else if (s.equalsIgnoreCase("-computeurl") || s.equalsIgnoreCase("-encodeurl")) {
this.computeurl = true;

} else if (s.startsWith("-x")) {
s = s.substring(2);
excludes.add(StringUtils.eventuallyRemoveStartingAndEndingDoubleQuote(s));
} else if (s.equalsIgnoreCase("-verbose") || s.equalsIgnoreCase("-v")) {

} else if (s.equalsIgnoreCase("-verbose") || s.equalsIgnoreCase("--verbose") || s.equalsIgnoreCase("-v")) {
OptionFlags.getInstance().setVerbose(true);

} else if (s.equalsIgnoreCase("-pipe") || s.equalsIgnoreCase("-p")) {
pipe = true;

} else if (s.equalsIgnoreCase("-pipedelimitor")) {
i++;
if (i == arg.length)
Expand All @@ -280,108 +309,153 @@ else if (nb.matches("\\d+"))
pipeDelimitor = arg[i];
} else if (s.equalsIgnoreCase("-pipemap")) {
pipeMap = true;

} else if (s.equalsIgnoreCase("-pipenostderr")) {
pipeNoStdErr = true;

} else if (s.equalsIgnoreCase("-syntax")) {
syntax = true;
OptionFlags.getInstance().setQuiet(true);

} else if (s.equalsIgnoreCase("-duration")) {
duration = true;

} else if (s.equalsIgnoreCase("-debugsvek") || s.equalsIgnoreCase("-debug_svek")) {
debugsvek = true;

} else if (s.equalsIgnoreCase("-keepfiles") || s.equalsIgnoreCase("-keepfile")) {
System.err.println("-keepfiles option has been removed. Please consider -debugsvek instead");

} else if (s.equalsIgnoreCase("-metadata")) {
OptionFlags.getInstance().setExtractFromMetadata(true);

} else if (s.equalsIgnoreCase("-logdata")) {
i++;
if (i == arg.length)
continue;

OptionFlags.getInstance()
.setLogData(new SFile(StringUtils.eventuallyRemoveStartingAndEndingDoubleQuote(arg[i])));

} else if (s.equalsIgnoreCase("-word")) {
OptionFlags.getInstance().setWord(true);
OptionFlags.getInstance().setQuiet(true);
this.charset = "UTF-8";

} else if (s.equalsIgnoreCase("-quiet")) {
OptionFlags.getInstance().setQuiet(true);

} else if (s.equalsIgnoreCase("-decodeurl")) {
this.decodeurl = true;
} else if (s.equalsIgnoreCase("-version")) {

} else if (s.equalsIgnoreCase("-version") || s.equalsIgnoreCase("--version")) {
OptionPrint.printVersion();

} else if (s.matches("(?i)^-li[sc][ea]n[sc]e\\s*$")) {
OptionPrint.printLicense();

} else if (s.startsWith("-DPLANTUML_LIMIT_SIZE=")) {
final String v = s.substring("-DPLANTUML_LIMIT_SIZE=".length());
if (v.matches("\\d+"))
System.setProperty("PLANTUML_LIMIT_SIZE", v);

} else if (s.startsWith("-D")) {
manageDefine(s.substring(2));

} else if (s.startsWith("-S")) {
manageSkinParam(s.substring(2));

} else if (s.startsWith("-P")) {
managePragma(s.substring(2));

} else if (s.equalsIgnoreCase("-testdot")) {
OptionPrint.printTestDot();

} else if (s.equalsIgnoreCase("-about") || s.equalsIgnoreCase("-author")
|| s.equalsIgnoreCase("-authors")) {
OptionPrint.printAbout();

} else if (s.equalsIgnoreCase("-help") || s.equalsIgnoreCase("-h") || s.equalsIgnoreCase("-?")) {
OptionPrint.printHelp();

} else if (s.equalsIgnoreCase("-language")) {
OptionPrint.printLanguage();

} else if (s.equalsIgnoreCase("-gui")) {
OptionFlags.getInstance().setGui(true);

} else if (s.equalsIgnoreCase("-encodesprite")) {
OptionFlags.getInstance().setEncodesprite(true);

} else if (s.equalsIgnoreCase("-printfonts")) {
OptionFlags.getInstance().setPrintFonts(true);

} else if (s.equalsIgnoreCase("-dumphtmlstats")) {
OptionFlags.getInstance().setDumpHtmlStats(true);

} else if (s.equalsIgnoreCase("-dumpstats")) {
OptionFlags.getInstance().setDumpStats(true);

} else if (s.equalsIgnoreCase("-loopstats")) {
OptionFlags.getInstance().setLoopStats(true);

} else if (s.equalsIgnoreCase("-enablestats")) {
OptionFlags.getInstance().setEnableStats(true);

} else if (s.equalsIgnoreCase("-disablestats")) {
OptionFlags.getInstance().setEnableStats(false);

} else if (s.equalsIgnoreCase("-extractstdlib")) {
OptionFlags.getInstance().setExtractStdLib(true);

} else if (s.equalsIgnoreCase("-stdlib")) {
OptionFlags.getInstance().setStdLib(true);

} else if (s.equalsIgnoreCase("-clipboard")) {
OptionFlags.getInstance().setClipboard(true);

} else if (s.equalsIgnoreCase("-clipboardloop")) {
OptionFlags.getInstance().setClipboardLoop(true);

} else if (s.equalsIgnoreCase("-htmlstats")) {
StatsUtils.setHtmlStats(true);

} else if (s.equalsIgnoreCase("-xmlstats")) {
StatsUtils.setXmlStats(true);

} else if (s.equalsIgnoreCase("-realtimestats")) {
StatsUtils.setRealTimeStats(true);

} else if (s.equalsIgnoreCase("-useseparatorminus")) {
OptionFlags.getInstance().setFileSeparator("-");

} else if (s.equalsIgnoreCase("-splash")) {
splash = true;

} else if (s.equalsIgnoreCase("-progress")) {
textProgressBar = true;

} else if (s.equalsIgnoreCase("-nometadata")) {
hideMetadata = true;

} else if (s.equalsIgnoreCase("-preproc")) {
preprocessorOutput = OptionPreprocOutputMode.NORMAL;

} else if (s.equalsIgnoreCase("-cypher")) {
preprocessorOutput = OptionPreprocOutputMode.CYPHER;

} else if (s.equalsIgnoreCase("-checkmetadata")) {
checkMetadata = true;

} else if (s.equalsIgnoreCase("-stdrpt:1")) {
stdrpt = 1;

} else if (s.equalsIgnoreCase("-stdrpt:2")) {
stdrpt = 2;

} else if (s.equalsIgnoreCase("-stdrpt")) {
stdrpt = 2;

} else if (s.equalsIgnoreCase("-pipeimageindex")) {
i++;
if (i == arg.length)
Expand All @@ -402,10 +476,12 @@ else if (nb.matches("\\d+"))
final String[] parts = s.split(":");
this.picowebPort = parts.length > 1 ? Integer.parseInt(parts[1]) : 8080;
this.picowebBindAddress = parts.length > 2 ? parts[2] : null;

this.picowebEnableStop = StringUtils.goLowerCase(s).contains("stop");
} else if (s.startsWith("-c")) {
s = s.substring(2);
config.add(StringUtils.eventuallyRemoveStartingAndEndingDoubleQuote(s));

} else {
result.add(s);
}
Expand Down
50 changes: 26 additions & 24 deletions src/net/sourceforge/plantuml/Run.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
import net.sourceforge.plantuml.file.FileGroup;
import net.sourceforge.plantuml.file.SuggestedFile;
import net.sourceforge.plantuml.ftp.FtpServer;
import net.sourceforge.plantuml.klimt.drawing.svg.SvgGraphics;
import net.sourceforge.plantuml.klimt.sprite.SpriteGrayLevel;
import net.sourceforge.plantuml.klimt.sprite.SpriteUtils;
import net.sourceforge.plantuml.log.Logme;
Expand Down Expand Up @@ -90,7 +91,7 @@ public static void main(String[] argsArray)
if (argsArray.length > 0 && argsArray[0].equalsIgnoreCase("-headless"))
System.setProperty("java.awt.headless", "true");
saveCommandLine(argsArray);

final Option option = new Option(argsArray);
ProgressBar.setEnable(option.isTextProgressBar());
if (OptionFlags.getInstance().isClipboardLoop()) {
Expand Down Expand Up @@ -461,19 +462,8 @@ private static void manageFileInternal(File f, Option option, ErrorStatus error)
throws IOException, InterruptedException {
Log.info("Working on " + f.getPath());
if (OptionFlags.getInstance().isExtractFromMetadata()) {
System.out.println("------------------------");
System.out.println(f);
// new Metadata().readAndDisplayMetadata(f);
System.out.println();
error.goOk();
final String data = new MetadataTag(f, "plantuml").getData();
// File file = SecurityUtils.File("tmp.txt");
// PrintWriter pw = SecurityUtils.PrintWriter(file, "UTF-8");
// pw.println(NastyEncoder.fromISO_8859_1(data));
// pw.close();

System.out.println(data);
System.out.println("------------------------");
extractMetadata(f);
return;
}
final ISourceFileReader sourceFileReader;
Expand Down Expand Up @@ -577,16 +567,28 @@ private static void hasErrors(File file, final List<GeneratedImage> list, ErrorS
error.goOk();
}

// public static void debugGantt() {
// final Locale locale = Locale.GERMAN;
// for (java.time.Month month : java.time.Month.values()) {
// System.err.println("Testing locale " + locale + " " + month);
// for (TextStyle style : TextStyle.values()) {
// final String s = month.getDisplayName(style, locale);
// System.err.println(style + " --> '" + s + "'");
//
// }
// }
// }
private static void extractMetadata(File f) throws IOException {
System.out.println("------------------------");
System.out.println(f);
System.out.println();
if (f.getName().endsWith(".svg")) {
final SFile file = SFile.fromFile(f);
final String svg = FileUtils.readFile(file);
final int idx = svg.lastIndexOf(SvgGraphics.META_HEADER);
if (idx > 0) {
String part = svg.substring(idx + SvgGraphics.META_HEADER.length());
final int idxEnd = part.indexOf("]");
if (idxEnd > 0) {
part = part.substring(0, idxEnd);
final String decoded = TranscoderUtil.getDefaultTranscoderProtected().decode(part);
System.err.println(decoded);
}
}
} else {
final String data = new MetadataTag(f, "plantuml").getData();
System.out.println(data);
}
System.out.println("------------------------");
}

}
4 changes: 2 additions & 2 deletions src/net/sourceforge/plantuml/abel/Link.java
Original file line number Diff line number Diff line change
Expand Up @@ -177,10 +177,10 @@ public final void setInvis(boolean invis) {
}

public boolean isBetween(Entity cl1, Entity cl2) {
if (cl1.equals(this.cl1) && cl2.equals(this.cl2))
if (cl1 == this.cl1 && cl2 == this.cl2)
return true;

if (cl1.equals(this.cl2) && cl2.equals(this.cl1))
if (cl1 == this.cl2 && cl2 == this.cl1)
return true;

return false;
Expand Down

0 comments on commit 47f2995

Please sign in to comment.