diff options
Diffstat (limited to 'src/net/sourceforge/plantuml/classdiagram/command/CommandDiamondAssociation.java')
-rw-r--r-- | src/net/sourceforge/plantuml/classdiagram/command/CommandDiamondAssociation.java | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/src/net/sourceforge/plantuml/classdiagram/command/CommandDiamondAssociation.java b/src/net/sourceforge/plantuml/classdiagram/command/CommandDiamondAssociation.java index e46a4eb..92a52e9 100644 --- a/src/net/sourceforge/plantuml/classdiagram/command/CommandDiamondAssociation.java +++ b/src/net/sourceforge/plantuml/classdiagram/command/CommandDiamondAssociation.java @@ -2,7 +2,7 @@ * PlantUML : a free UML diagram generator * ======================================================================== * - * (C) Copyright 2009-2017, Arnaud Roques + * (C) Copyright 2009-2020, Arnaud Roques * * Project Info: http://plantuml.com * @@ -35,28 +35,44 @@ */ package net.sourceforge.plantuml.classdiagram.command; -import java.util.List; - +import net.sourceforge.plantuml.LineLocation; +import net.sourceforge.plantuml.OptionFlags; import net.sourceforge.plantuml.classdiagram.ClassDiagram; import net.sourceforge.plantuml.command.CommandExecutionResult; -import net.sourceforge.plantuml.command.SingleLineCommand; +import net.sourceforge.plantuml.command.SingleLineCommand2; +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.cucadiagram.Code; import net.sourceforge.plantuml.cucadiagram.Display; +import net.sourceforge.plantuml.cucadiagram.Ident; import net.sourceforge.plantuml.cucadiagram.LeafType; -public class CommandDiamondAssociation extends SingleLineCommand<ClassDiagram> { +public class CommandDiamondAssociation extends SingleLineCommand2<ClassDiagram> { public CommandDiamondAssociation() { - super("(?i)^\\<\\>[%s]*([\\p{L}0-9_.]+)$"); + super(getRegexConcat()); + } + + static IRegex getRegexConcat() { + return RegexConcat.build(CommandDiamondAssociation.class.getName(), RegexLeaf.start(), // + new RegexLeaf("\\<\\>"), // + RegexLeaf.spaceZeroOrMore(), // + new RegexLeaf("CODE", "([\\p{L}0-9_.]+)"), // + RegexLeaf.end()); // } @Override - protected CommandExecutionResult executeArg(ClassDiagram diagram, List<String> arg) { - final Code code = Code.of(arg.get(0)); - if (diagram.leafExist(code)) { - return CommandExecutionResult.error("Already existing : "+code.getFullName()); + protected CommandExecutionResult executeArg(ClassDiagram diagram, LineLocation location, RegexResult arg) { + final String idShort = arg.get("CODE", 0); + final Ident ident = diagram.buildLeafIdent(idShort); + final Code code = diagram.V1972() ? ident : diagram.buildCode(idShort); + final boolean leafExist = diagram.V1972() ? diagram.leafExistSmart(ident) : diagram.leafExist(code); + if (leafExist) { + return CommandExecutionResult.error("Already existing : " + code.getName()); } - diagram.createLeaf(code, Display.NULL, LeafType.ASSOCIATION, null); + diagram.createLeaf(ident, code, Display.NULL, LeafType.ASSOCIATION, null); return CommandExecutionResult.ok(); } |