From 266e8b6497e3386ed8c5ed3b0d22d53ecf3c5af6 Mon Sep 17 00:00:00 2001 From: Arnaud Roques Date: Thu, 18 Mar 2021 14:38:17 +0100 Subject: [PATCH] Add new affectation --- .../sourceforge/plantuml/tim/EaterAffectation.java | 11 +++++++++++ src/net/sourceforge/plantuml/tim/TLineType.java | 2 +- src/net/sourceforge/plantuml/version/Version.java | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/net/sourceforge/plantuml/tim/EaterAffectation.java b/src/net/sourceforge/plantuml/tim/EaterAffectation.java index 29ab674c3..120be5dc5 100644 --- a/src/net/sourceforge/plantuml/tim/EaterAffectation.java +++ b/src/net/sourceforge/plantuml/tim/EaterAffectation.java @@ -51,12 +51,23 @@ public class EaterAffectation extends Eater { String varname = eatAndGetVarname(); TVariableScope scope = null; skipSpaces(); + boolean conditional = false; + if (peekChar() == '?') { + checkAndEatChar('?'); + conditional = true; + } if (peekChar() != '=') { scope = TVariableScope.valueOf(varname.toUpperCase()); varname = eatAndGetVarname(); skipSpaces(); } checkAndEatChar('='); + if (conditional) { + final TValue already = memory.getVariable(varname); + if (already != null) { + return; + } + } skipSpaces(); final TValue value = eatExpression(context, memory); memory.putVariable(varname, value, scope); diff --git a/src/net/sourceforge/plantuml/tim/TLineType.java b/src/net/sourceforge/plantuml/tim/TLineType.java index 42d1fed64..a2fcd55c0 100644 --- a/src/net/sourceforge/plantuml/tim/TLineType.java +++ b/src/net/sourceforge/plantuml/tim/TLineType.java @@ -62,7 +62,7 @@ public enum TLineType { if (s.matches("^\\s*!define\\s+[\\p{L}_][\\p{L}_0-9]*\\b.*")) { return AFFECTATION_DEFINE; } - if (s.matches("^\\s*!\\s*(local|global)?\\s*\\$?[\\p{L}_][\\p{L}_0-9]*\\s*=.*")) { + if (s.matches("^\\s*!\\s*(local|global)?\\s*\\$?[\\p{L}_][\\p{L}_0-9]*\\s*\\??=.*")) { return AFFECTATION; } if (s.matches("^\\s*'.*")) { diff --git a/src/net/sourceforge/plantuml/version/Version.java b/src/net/sourceforge/plantuml/version/Version.java index c88b37d2d..38320775f 100644 --- a/src/net/sourceforge/plantuml/version/Version.java +++ b/src/net/sourceforge/plantuml/version/Version.java @@ -80,7 +80,7 @@ public class Version { } public static int beta() { - final int beta = 6; + final int beta = 7; return beta; }