mirror of
https://github.com/octoleo/plantuml.git
synced 2024-12-22 10:59:01 +00:00
This commit is contained in:
parent
c0a51633ce
commit
e823b5f00f
@ -65,54 +65,58 @@ public class DirWatcher {
|
||||
public List<GeneratedImage> buildCreatedFiles() throws IOException, InterruptedException {
|
||||
boolean error = false;
|
||||
final List<GeneratedImage> result = new ArrayList<>();
|
||||
for (File f : dir.listFiles()) {
|
||||
if (error) {
|
||||
continue;
|
||||
}
|
||||
if (f.isFile() == false) {
|
||||
continue;
|
||||
}
|
||||
if (fileToProcess(f.getName()) == false) {
|
||||
continue;
|
||||
}
|
||||
final FileWatcher watcher = modifieds.get(f);
|
||||
if (dir.listFiles() != null)
|
||||
for (File f : dir.listFiles()) {
|
||||
if (error)
|
||||
continue;
|
||||
|
||||
if (watcher == null || watcher.hasChanged()) {
|
||||
final SourceFileReader sourceFileReader = new SourceFileReader(Defines.createWithFileName(f), f,
|
||||
option.getOutputDir(), option.getConfig(), option.getCharset(), option.getFileFormatOption());
|
||||
final Set<File> files = FileWithSuffix.convert(sourceFileReader.getIncludedFiles());
|
||||
files.add(f);
|
||||
for (GeneratedImage g : sourceFileReader.getGeneratedImages()) {
|
||||
result.add(g);
|
||||
if (option.isFailfastOrFailfast2() && g.lineErrorRaw() != -1) {
|
||||
error = true;
|
||||
if (f.isFile() == false)
|
||||
continue;
|
||||
|
||||
if (fileToProcess(f.getName()) == false)
|
||||
continue;
|
||||
|
||||
final FileWatcher watcher = modifieds.get(f);
|
||||
|
||||
if (watcher == null || watcher.hasChanged()) {
|
||||
final SourceFileReader sourceFileReader = new SourceFileReader(Defines.createWithFileName(f), f,
|
||||
option.getOutputDir(), option.getConfig(), option.getCharset(),
|
||||
option.getFileFormatOption());
|
||||
final Set<File> files = FileWithSuffix.convert(sourceFileReader.getIncludedFiles());
|
||||
files.add(f);
|
||||
for (GeneratedImage g : sourceFileReader.getGeneratedImages()) {
|
||||
result.add(g);
|
||||
if (option.isFailfastOrFailfast2() && g.lineErrorRaw() != -1) {
|
||||
error = true;
|
||||
}
|
||||
}
|
||||
modifieds.put(f, new FileWatcher(files));
|
||||
}
|
||||
modifieds.put(f, new FileWatcher(files));
|
||||
}
|
||||
}
|
||||
Collections.sort(result);
|
||||
return Collections.unmodifiableList(result);
|
||||
}
|
||||
|
||||
public File getErrorFile() throws IOException, InterruptedException {
|
||||
for (File f : dir.listFiles()) {
|
||||
if (f.isFile() == false) {
|
||||
continue;
|
||||
}
|
||||
if (fileToProcess(f.getName()) == false) {
|
||||
continue;
|
||||
}
|
||||
final FileWatcher watcher = modifieds.get(f);
|
||||
if (dir.listFiles() != null)
|
||||
for (File f : dir.listFiles()) {
|
||||
if (f.isFile() == false)
|
||||
continue;
|
||||
|
||||
if (fileToProcess(f.getName()) == false)
|
||||
continue;
|
||||
|
||||
final FileWatcher watcher = modifieds.get(f);
|
||||
|
||||
if (watcher == null || watcher.hasChanged()) {
|
||||
final SourceFileReader sourceFileReader = new SourceFileReader(Defines.createWithFileName(f), f,
|
||||
option.getOutputDir(), option.getConfig(), option.getCharset(),
|
||||
option.getFileFormatOption());
|
||||
if (sourceFileReader.hasError())
|
||||
return f;
|
||||
|
||||
if (watcher == null || watcher.hasChanged()) {
|
||||
final SourceFileReader sourceFileReader = new SourceFileReader(Defines.createWithFileName(f), f,
|
||||
option.getOutputDir(), option.getConfig(), option.getCharset(), option.getFileFormatOption());
|
||||
if (sourceFileReader.hasError()) {
|
||||
return f;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -71,14 +71,14 @@ public class DirWatcher2 {
|
||||
|
||||
public Map<File, Future<List<GeneratedImage>>> buildCreatedFiles() throws IOException, InterruptedException {
|
||||
final Map<File, Future<List<GeneratedImage>>> result = new TreeMap<File, Future<List<GeneratedImage>>>();
|
||||
if (dir.listFiles() != null) {
|
||||
if (dir.listFiles() != null)
|
||||
for (final File f : dir.listFiles()) {
|
||||
if (f.isFile() == false) {
|
||||
if (f.isFile() == false)
|
||||
continue;
|
||||
}
|
||||
if (fileToProcess(f.getName()) == false) {
|
||||
|
||||
if (fileToProcess(f.getName()) == false)
|
||||
continue;
|
||||
}
|
||||
|
||||
final FileWatcher watcher = modifieds.get(f);
|
||||
|
||||
if (watcher == null || watcher.hasChanged()) {
|
||||
@ -106,7 +106,6 @@ public class DirWatcher2 {
|
||||
result.put(f, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
return Collections.unmodifiableMap(result);
|
||||
}
|
||||
|
||||
|
@ -57,13 +57,13 @@ public class FileGroup {
|
||||
this.pattern = pattern;
|
||||
this.excluded = excluded;
|
||||
this.option = option;
|
||||
if (pattern.indexOf("*") == -1 && pattern.indexOf("?") == -1) {
|
||||
if (pattern.indexOf("*") == -1 && pattern.indexOf("?") == -1)
|
||||
initNoStar();
|
||||
} else if (pattern.indexOf("**") != -1) {
|
||||
else if (pattern.indexOf("**") != -1)
|
||||
recurse();
|
||||
} else {
|
||||
else
|
||||
initWithSimpleStar();
|
||||
}
|
||||
|
||||
Collections.sort(result);
|
||||
|
||||
}
|
||||
@ -71,54 +71,53 @@ public class FileGroup {
|
||||
private void recurse() {
|
||||
final Matcher2 m = predirPath.matcher(pattern);
|
||||
final boolean ok = m.find();
|
||||
if (ok == false) {
|
||||
if (ok == false)
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
|
||||
final File parent;
|
||||
if (m.group(1) == null) {
|
||||
if (m.group(1) == null)
|
||||
parent = new File(".");
|
||||
} else {
|
||||
else
|
||||
parent = new File(m.group(1));
|
||||
}
|
||||
|
||||
initWithDoubleStar(parent);
|
||||
}
|
||||
|
||||
private void initNoStar() {
|
||||
final File f = new File(pattern);
|
||||
if (f.isDirectory()) {
|
||||
if (f.isDirectory())
|
||||
addSimpleDirectory(f);
|
||||
} else if (f.isFile()) {
|
||||
else if (f.isFile())
|
||||
addResultFile(f);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void addResultFile(final File f) {
|
||||
final String path = getNormalizedPath(f);
|
||||
for (String x : excluded) {
|
||||
if (path.matches(toRegexp(x))) {
|
||||
for (String x : excluded)
|
||||
if (path.matches(toRegexp(x)))
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
result.add(f);
|
||||
}
|
||||
|
||||
private void addSimpleDirectory(File dir) {
|
||||
if (OptionFlags.getInstance().isWord()) {
|
||||
if (OptionFlags.getInstance().isWord())
|
||||
addSimpleDirectory(dir, "(?i)^.*_extr\\d+\\.txt$");
|
||||
} else {
|
||||
else
|
||||
addSimpleDirectory(dir, option.getPattern());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void addSimpleDirectory(File dir, String pattern) {
|
||||
if (dir.isDirectory() == false) {
|
||||
if (dir.isDirectory() == false)
|
||||
throw new IllegalArgumentException("dir=" + dir);
|
||||
}
|
||||
for (File f : dir.listFiles()) {
|
||||
if (f.getName().matches(pattern)) {
|
||||
addResultFile(f);
|
||||
}
|
||||
}
|
||||
|
||||
if (dir.listFiles() != null)
|
||||
for (File f : dir.listFiles())
|
||||
if (f.getName().matches(pattern))
|
||||
addResultFile(f);
|
||||
|
||||
}
|
||||
|
||||
private static String getNormalizedPath(File f) {
|
||||
@ -146,17 +145,16 @@ public class FileGroup {
|
||||
}
|
||||
|
||||
private void initWithDoubleStar(File currentDir) {
|
||||
for (File f : currentDir.listFiles()) {
|
||||
if (f.isDirectory()) {
|
||||
initWithDoubleStar(f);
|
||||
} else if (f.isFile()) {
|
||||
final String path = getNormalizedPath(f);
|
||||
if (path.matches(toRegexp(pattern))) {
|
||||
addResultFile(f);
|
||||
if (currentDir.listFiles() != null)
|
||||
for (File f : currentDir.listFiles()) {
|
||||
if (f.isDirectory()) {
|
||||
initWithDoubleStar(f);
|
||||
} else if (f.isFile()) {
|
||||
final String path = getNormalizedPath(f);
|
||||
if (path.matches(toRegexp(pattern)))
|
||||
addResultFile(f);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -45,6 +45,7 @@ import net.sourceforge.plantuml.activitydiagram3.command.CommandActivityLong3;
|
||||
import net.sourceforge.plantuml.activitydiagram3.command.CommandArrow3;
|
||||
import net.sourceforge.plantuml.activitydiagram3.command.CommandArrowLong3;
|
||||
import net.sourceforge.plantuml.activitydiagram3.command.CommandBackward3;
|
||||
import net.sourceforge.plantuml.activitydiagram3.command.CommandBackwardLong3;
|
||||
import net.sourceforge.plantuml.activitydiagram3.command.CommandBreak;
|
||||
import net.sourceforge.plantuml.activitydiagram3.command.CommandCase;
|
||||
import net.sourceforge.plantuml.activitydiagram3.command.CommandCircleSpot3;
|
||||
@ -125,6 +126,7 @@ public class ActivityDiagramFactory3 extends PSystemCommandFactory {
|
||||
cmds.add(new CommandRepeatWhile3());
|
||||
cmds.add(new CommandRepeatWhile3Multilines());
|
||||
cmds.add(new CommandBackward3());
|
||||
cmds.add(new CommandBackwardLong3());
|
||||
cmds.add(new CommandWhile3());
|
||||
cmds.add(new CommandWhileEnd3());
|
||||
|
||||
|
@ -79,9 +79,7 @@ public class CommandActivityLong3 extends CommandMultilines2<ActivityDiagram3> {
|
||||
final RegexResult line0 = getStartingPattern().matcher(lines.getFirst().getTrimmed().getString());
|
||||
final Colors colors = color().getColor(diagram.getSkinParam().getThemeStyle(), line0,
|
||||
diagram.getSkinParam().getIHtmlColorSet());
|
||||
// final HtmlColor color =
|
||||
// diagram.getSkinParam().getIHtmlColorSet().getColorIfValid(line0.get("COLOR",
|
||||
// 0));
|
||||
|
||||
final BoxStyle style = BoxStyle.fromChar(lines.getLastChar());
|
||||
lines = lines.removeStartingAndEnding(line0.get("DATA", 0), 1);
|
||||
return diagram.addActivity(lines.toDisplay(), style, null, colors, null);
|
||||
|
@ -0,0 +1,98 @@
|
||||
/* ========================================================================
|
||||
* PlantUML : a free UML diagram generator
|
||||
* ========================================================================
|
||||
*
|
||||
* (C) Copyright 2009-2020, Arnaud Roques
|
||||
*
|
||||
* Project Info: http://plantuml.com
|
||||
*
|
||||
* If you like this project or if you find it useful, you can support us at:
|
||||
*
|
||||
* http://plantuml.com/patreon (only 1$ per month!)
|
||||
* http://plantuml.com/paypal
|
||||
*
|
||||
* This file is part of PlantUML.
|
||||
*
|
||||
* PlantUML is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* PlantUML distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||
* License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||
* USA.
|
||||
*
|
||||
*
|
||||
* Original Author: Arnaud Roques
|
||||
*
|
||||
*
|
||||
*/
|
||||
package net.sourceforge.plantuml.activitydiagram3.command;
|
||||
|
||||
import net.sourceforge.plantuml.activitydiagram3.ActivityDiagram3;
|
||||
import net.sourceforge.plantuml.activitydiagram3.LinkRendering;
|
||||
import net.sourceforge.plantuml.activitydiagram3.ftile.BoxStyle;
|
||||
import net.sourceforge.plantuml.command.BlocLines;
|
||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||
import net.sourceforge.plantuml.command.CommandMultilines2;
|
||||
import net.sourceforge.plantuml.command.MultilinesStrategy;
|
||||
import net.sourceforge.plantuml.command.regex.IRegex;
|
||||
import net.sourceforge.plantuml.command.regex.RegexConcat;
|
||||
import net.sourceforge.plantuml.command.regex.RegexLeaf;
|
||||
import net.sourceforge.plantuml.command.regex.RegexResult;
|
||||
import net.sourceforge.plantuml.graphic.color.ColorParser;
|
||||
import net.sourceforge.plantuml.graphic.color.ColorType;
|
||||
import net.sourceforge.plantuml.ugraphic.color.NoSuchColorException;
|
||||
|
||||
public class CommandBackwardLong3 extends CommandMultilines2<ActivityDiagram3> {
|
||||
|
||||
public CommandBackwardLong3() {
|
||||
super(getRegexConcat(), MultilinesStrategy.REMOVE_STARTING_QUOTE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPatternEnd() {
|
||||
return "^(.*)" + CommandActivity3.endingGroup() + "$";
|
||||
}
|
||||
|
||||
private static ColorParser color() {
|
||||
return ColorParser.simpleColor(ColorType.BACK);
|
||||
}
|
||||
|
||||
static IRegex getRegexConcat() {
|
||||
return RegexConcat.build(CommandBackwardLong3.class.getName(), RegexLeaf.start(), //
|
||||
RegexLeaf.spaceZeroOrMore(), //
|
||||
new RegexLeaf("backward"), //
|
||||
RegexLeaf.spaceZeroOrMore(), //
|
||||
new RegexLeaf(":"), //
|
||||
RegexLeaf.spaceZeroOrMore(), //
|
||||
new RegexLeaf("DATA", "(.*)"), //
|
||||
RegexLeaf.end());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected CommandExecutionResult executeNow(ActivityDiagram3 diagram, BlocLines lines) throws NoSuchColorException {
|
||||
lines = lines.removeEmptyColumns();
|
||||
final RegexResult line0 = getStartingPattern().matcher(lines.getFirst().getTrimmed().getString());
|
||||
// final Colors colors = color().getColor(diagram.getSkinParam().getThemeStyle(), line0,
|
||||
// diagram.getSkinParam().getIHtmlColorSet());
|
||||
//
|
||||
final BoxStyle style = BoxStyle.fromChar(lines.getLastChar());
|
||||
lines = lines.removeStartingAndEnding(line0.get("DATA", 0), 1);
|
||||
|
||||
final LinkRendering in = LinkRendering.none();
|
||||
final LinkRendering out = LinkRendering.none();
|
||||
|
||||
// return diagram.addActivity(lines.toDisplay(), style, null, colors, null);
|
||||
|
||||
return diagram.backward(lines.toDisplay(), style, in, out);
|
||||
|
||||
// return CommandExecutionResult.ok();
|
||||
}
|
||||
}
|
@ -244,18 +244,19 @@ public class PlantUmlTask extends Task {
|
||||
this.log(s);
|
||||
throw new BuildException(s);
|
||||
}
|
||||
for (File f : dir.listFiles()) {
|
||||
if (f.isFile() == false) {
|
||||
continue;
|
||||
if (dir.listFiles() != null)
|
||||
for (File f : dir.listFiles()) {
|
||||
if (f.isFile() == false)
|
||||
continue;
|
||||
|
||||
if (fileToProcess(f.getName()) == false)
|
||||
continue;
|
||||
|
||||
final boolean error = processingSingleFile(f);
|
||||
if (error)
|
||||
return f;
|
||||
|
||||
}
|
||||
if (fileToProcess(f.getName()) == false) {
|
||||
continue;
|
||||
}
|
||||
final boolean error = processingSingleFile(f);
|
||||
if (error) {
|
||||
return f;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -172,6 +172,9 @@ public class SFile implements Comparable<SFile> {
|
||||
|
||||
public Collection<SFile> listFiles() {
|
||||
final File[] tmp = internal.listFiles();
|
||||
if (tmp == null)
|
||||
return Collections.emptyList();
|
||||
|
||||
final List<SFile> result = new ArrayList<>(tmp.length);
|
||||
for (File f : tmp) {
|
||||
result.add(new SFile(f));
|
||||
|
@ -80,7 +80,7 @@ public class Version {
|
||||
}
|
||||
|
||||
public static int beta() {
|
||||
final int beta = 0;
|
||||
final int beta = 1;
|
||||
return beta;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user