Skip to content
Snippets Groups Projects
Commit fe18e34c authored by René Schöne's avatar René Schöne
Browse files

0.2

- use packaged plantuml to create png files per default
- add option "--printSource" to create a md file instead
parent 0b85c32e
Branches
No related tags found
No related merge requests found
Pipeline #12753 passed
......@@ -24,6 +24,7 @@ jar {
dependencies {
implementation project(':relast.preprocessor')
implementation fileTree(include: ['plantuml.jar'], dir: '../libs')
implementation group: 'com.github.spullara.mustache.java', name: 'compiler', version: "${mustache_java_version}"
runtime group: 'org.jastadd', name: 'jastadd', version: '2.3.4'
......
package de.tudresden.inf.st.jastadd.grammar2uml.compiler;
import beaver.Parser;
import org.jastadd.option.BooleanOption;
import org.jastadd.option.ValueOption;
import org.jastadd.relast.compiler.AbstractCompiler;
import org.jastadd.relast.compiler.CompilerException;
import de.tudresden.inf.st.jastadd.grammar2uml.ast.ErrorMessage;
import de.tudresden.inf.st.jastadd.grammar2uml.ast.Grammar2Uml;
import de.tudresden.inf.st.jastadd.grammar2uml.ast.GrammarFile;
import de.tudresden.inf.st.jastadd.grammar2uml.ast.Program;
import de.tudresden.inf.st.jastadd.grammar2uml.ast.Grammar2Uml;
import de.tudresden.inf.st.jastadd.grammar2uml.parser.Grammar2UmlParser;
import de.tudresden.inf.st.jastadd.grammar2uml.scanner.Grammar2UmlScanner;
import net.sourceforge.plantuml.SourceStringReader;
import org.jastadd.option.BooleanOption;
import org.jastadd.option.ValueOption;
import org.jastadd.relast.compiler.AbstractCompiler;
import org.jastadd.relast.compiler.CompilerException;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
......@@ -26,6 +26,7 @@ public class Compiler extends AbstractCompiler {
private ValueOption optionOutputFile;
private ValueOption optionInputGrammar2Uml;
private BooleanOption optionDefaultFolders;
private BooleanOption optionPrintSource;
private BooleanOption optionHelp;
private BooleanOption optionVersion;
private BooleanOption optionVerbose;
......@@ -67,16 +68,6 @@ public class Compiler extends AbstractCompiler {
System.out.println(message);
}
private void writeToFile(String filename, String str) throws CompilerException {
try {
PrintWriter writer = new PrintWriter(filename);
writer.print(str);
writer.close();
} catch (Exception e) {
throw new CompilerException("Could not write to file " + filename, e);
}
}
protected void initOptions() {
optionOutputFile = addOption(
new ValueOption("output", "target file to be generated.")
......@@ -90,6 +81,9 @@ public class Compiler extends AbstractCompiler {
new BooleanOption("defaultFolders",
"Creates a default folder per grammar file.")
.defaultValue(false));
optionPrintSource = addOption(
new BooleanOption("printSource", "The output will be the source code instead of a png.")
.defaultValue(false));
optionHelp = addOption(
new BooleanOption("help", "Print usage and exit.")
.defaultValue(false));
......@@ -160,13 +154,7 @@ public class Compiler extends AbstractCompiler {
printMessage("Running grammar2uml " + readVersion());
String output;
if (optionOutputFile.isMatched()) {
output = optionOutputFile.value();
} else {
output = "uml.md";
System.out.println("No output output file is set. Assuming '" + output + "'.");
}
Path destination = getDestinationPath();
Path parent = Paths.get(optionOutputFile.value()).toAbsolutePath().getParent();
try {
Files.createDirectories(parent);
......@@ -188,8 +176,32 @@ public class Compiler extends AbstractCompiler {
System.exit(1);
}
printMessage("Writing output file " + output);
writeToFile(output, grammar2uml.generateAspect());
printMessage("Writing output file " + destination);
String sourceCode = grammar2uml.generateAspect();
try {
if (optionPrintSource.isMatched()) {
Files.writeString(destination, sourceCode);
} else {
SourceStringReader reader = new SourceStringReader(sourceCode);
reader.outputImage(Files.newOutputStream(destination));
}
} catch (Exception e) {
throw new CompilerException("Could not write to file " + destination, e);
}
return 0;
}
private Path getDestinationPath() {
final String outputFileName;
if (optionOutputFile.isMatched()) {
outputFileName = optionOutputFile.value();
} else {
outputFileName = optionPrintSource.isMatched() ? "uml.md" : "uml.png";
System.out.println("No output output file is set. Assuming '" + outputFileName + "'.");
}
return Paths.get(outputFileName).toAbsolutePath();
}
}
#Fri Jan 15 20:11:10 CET 2021
version=0.1.1
#Thu Feb 24 16:08:53 CET 2022
version=0.2
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment