From 2a961129f236f0d571b2e47bcd77e101909d6fb6 Mon Sep 17 00:00:00 2001 From: Arnaud Roques Date: Tue, 20 Feb 2024 19:52:29 +0100 Subject: [PATCH] chore: improve error message when missing stdlib https://github.com/plantuml/plantuml/pull/1692#issuecomment-1952831187 --- src/net/sourceforge/plantuml/preproc/Stdlib.java | 3 +++ src/net/sourceforge/plantuml/tim/TFunctionImpl.java | 6 ++++-- src/net/sourceforge/plantuml/tim/stdlib/AlwaysFalse.java | 4 +++- src/net/sourceforge/plantuml/tim/stdlib/AlwaysTrue.java | 2 ++ .../sourceforge/plantuml/tim/stdlib/CallUserFunction.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/Chr.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/Darken.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/DateFunction.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/Dec2hex.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/Dirpath.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/Eval.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/Feature.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/FileExists.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/Filename.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/FunctionExists.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/GetAllTheme.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/GetJsonKey.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/GetJsonType.java | 2 ++ .../sourceforge/plantuml/tim/stdlib/GetVariableValue.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/GetVersion.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/Getenv.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/Hex2dec.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/HslColor.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/IntVal.java | 2 ++ .../sourceforge/plantuml/tim/stdlib/InvokeProcedure.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/IsDark.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/IsLight.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/JsonKeyExists.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/Lighten.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/LoadJson.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/LogicalAnd.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/LogicalNand.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/LogicalNor.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/LogicalNot.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/LogicalNxor.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/LogicalOr.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/LogicalXor.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/Lower.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/Newline.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/Now.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/Ord.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/RandomFunction.java | 2 ++ .../sourceforge/plantuml/tim/stdlib/RetrieveProcedure.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/ReverseColor.java | 2 ++ .../sourceforge/plantuml/tim/stdlib/ReverseHsluvColor.java | 2 ++ .../sourceforge/plantuml/tim/stdlib/SetVariableValue.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/Size.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/SplitStr.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/StringFunction.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/Strlen.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/Strpos.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/Substr.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/Upper.java | 2 ++ src/net/sourceforge/plantuml/tim/stdlib/VariableExists.java | 2 ++ 54 files changed, 112 insertions(+), 3 deletions(-) diff --git a/src/net/sourceforge/plantuml/preproc/Stdlib.java b/src/net/sourceforge/plantuml/preproc/Stdlib.java index 43b00edea..2c4863e15 100644 --- a/src/net/sourceforge/plantuml/preproc/Stdlib.java +++ b/src/net/sourceforge/plantuml/preproc/Stdlib.java @@ -332,6 +332,9 @@ public class Stdlib { private static Collection getAll() throws IOException { final Set result = new TreeSet<>(); final InputStream home = getInternalInputStream("home", ".repx"); + if (home == null) + throw new IOException("Cannot access to /stdlib/*.repx files"); + final BufferedReader br = new BufferedReader(new InputStreamReader(home)); String name; while ((name = br.readLine()) != null) diff --git a/src/net/sourceforge/plantuml/tim/TFunctionImpl.java b/src/net/sourceforge/plantuml/tim/TFunctionImpl.java index 111942152..54183810b 100644 --- a/src/net/sourceforge/plantuml/tim/TFunctionImpl.java +++ b/src/net/sourceforge/plantuml/tim/TFunctionImpl.java @@ -69,6 +69,7 @@ public class TFunctionImpl implements TFunction { this.functionType = functionType; } + @Override public boolean canCover(int nbArg, Set namedArguments) { for (String n : namedArguments) if (signature.getNamedArguments().contains(n) == false) @@ -140,8 +141,9 @@ public class TFunctionImpl implements TFunction { context.executeLines(copy, body, TFunctionType.PROCEDURE, false); } - public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List args, - Map named) throws EaterException, EaterExceptionLocated { + @Override + public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, + List args, Map named) throws EaterException, EaterExceptionLocated { if (functionType == TFunctionType.LEGACY_DEFINE) return executeReturnLegacyDefine(location, context, memory, args); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/AlwaysFalse.java b/src/net/sourceforge/plantuml/tim/stdlib/AlwaysFalse.java index c06523e00..0c73b754a 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/AlwaysFalse.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/AlwaysFalse.java @@ -52,10 +52,12 @@ public class AlwaysFalse extends SimpleReturnFunction { return new TFunctionSignature("%false", 0); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 0; } - + + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { return TValue.fromBoolean(false); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/AlwaysTrue.java b/src/net/sourceforge/plantuml/tim/stdlib/AlwaysTrue.java index 90ed2c7c1..66ec893af 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/AlwaysTrue.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/AlwaysTrue.java @@ -52,10 +52,12 @@ public class AlwaysTrue extends SimpleReturnFunction { return new TFunctionSignature("%true", 0); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 0; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { return TValue.fromBoolean(true); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/CallUserFunction.java b/src/net/sourceforge/plantuml/tim/stdlib/CallUserFunction.java index 3282983ca..5d9107a92 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/CallUserFunction.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/CallUserFunction.java @@ -53,10 +53,12 @@ public class CallUserFunction extends SimpleReturnFunction { return new TFunctionSignature("%call_user_func", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg > 0; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final String fname = values.get(0).toString(); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/Chr.java b/src/net/sourceforge/plantuml/tim/stdlib/Chr.java index 7fdc13f2b..cdd7e139a 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/Chr.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/Chr.java @@ -52,10 +52,12 @@ public class Chr extends SimpleReturnFunction { return new TFunctionSignature("%chr", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { try { diff --git a/src/net/sourceforge/plantuml/tim/stdlib/Darken.java b/src/net/sourceforge/plantuml/tim/stdlib/Darken.java index bb5d05a7b..e053ac6c7 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/Darken.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/Darken.java @@ -56,10 +56,12 @@ public class Darken extends SimpleReturnFunction { return new TFunctionSignature("%darken", 2); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 2; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final String colorString = values.get(0).toString(); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/DateFunction.java b/src/net/sourceforge/plantuml/tim/stdlib/DateFunction.java index 0140a6385..1c18155d9 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/DateFunction.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/DateFunction.java @@ -54,10 +54,12 @@ public class DateFunction extends SimpleReturnFunction { return new TFunctionSignature("%date", 2); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 0 || nbArg == 1 || nbArg == 2; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { if (values.size() == 0) diff --git a/src/net/sourceforge/plantuml/tim/stdlib/Dec2hex.java b/src/net/sourceforge/plantuml/tim/stdlib/Dec2hex.java index 1c3172996..3dc6f7b63 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/Dec2hex.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/Dec2hex.java @@ -52,10 +52,12 @@ public class Dec2hex extends SimpleReturnFunction { return new TFunctionSignature("%dec2hex", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { try { diff --git a/src/net/sourceforge/plantuml/tim/stdlib/Dirpath.java b/src/net/sourceforge/plantuml/tim/stdlib/Dirpath.java index 54fabb43d..1c918c4e8 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/Dirpath.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/Dirpath.java @@ -59,10 +59,12 @@ public class Dirpath extends SimpleReturnFunction { return new TFunctionSignature("%dirpath", 0); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 0; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { if (value == null) { diff --git a/src/net/sourceforge/plantuml/tim/stdlib/Eval.java b/src/net/sourceforge/plantuml/tim/stdlib/Eval.java index 7175e2ffc..ee7ad6e46 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/Eval.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/Eval.java @@ -53,10 +53,12 @@ public class Eval extends SimpleReturnFunction { return new TFunctionSignature("%eval", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final String exp = values.get(0).toString(); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/Feature.java b/src/net/sourceforge/plantuml/tim/stdlib/Feature.java index 088958f9e..f79b4ed4d 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/Feature.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/Feature.java @@ -52,10 +52,12 @@ public class Feature extends SimpleReturnFunction { return new TFunctionSignature("%feature", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final String arg = values.get(0).toString(); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/FileExists.java b/src/net/sourceforge/plantuml/tim/stdlib/FileExists.java index 47355c4dd..d7b68e423 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/FileExists.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/FileExists.java @@ -53,10 +53,12 @@ public class FileExists extends SimpleReturnFunction { return new TFunctionSignature("%file_exists", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { // ::comment when __CORE__ diff --git a/src/net/sourceforge/plantuml/tim/stdlib/Filename.java b/src/net/sourceforge/plantuml/tim/stdlib/Filename.java index 02e0f2d56..49fd6b6c8 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/Filename.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/Filename.java @@ -59,10 +59,12 @@ public class Filename extends SimpleReturnFunction { return new TFunctionSignature("%filename", 0); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 0; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { if (value == null) { diff --git a/src/net/sourceforge/plantuml/tim/stdlib/FunctionExists.java b/src/net/sourceforge/plantuml/tim/stdlib/FunctionExists.java index c7ccef030..43442f82e 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/FunctionExists.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/FunctionExists.java @@ -53,10 +53,12 @@ public class FunctionExists extends SimpleReturnFunction { return new TFunctionSignature("%function_exists", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final String name = values.get(0).toString(); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/GetAllTheme.java b/src/net/sourceforge/plantuml/tim/stdlib/GetAllTheme.java index 3446e6de8..e0b2d0281 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/GetAllTheme.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/GetAllTheme.java @@ -56,10 +56,12 @@ public class GetAllTheme extends SimpleReturnFunction { return new TFunctionSignature("%get_all_theme", 0); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 0; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final JsonArray result = new JsonArray(); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/GetJsonKey.java b/src/net/sourceforge/plantuml/tim/stdlib/GetJsonKey.java index 4df4bf5b5..244824ee3 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/GetJsonKey.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/GetJsonKey.java @@ -55,10 +55,12 @@ public class GetJsonKey extends SimpleReturnFunction { return new TFunctionSignature("%get_json_keys", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final TValue data = values.get(0); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/GetJsonType.java b/src/net/sourceforge/plantuml/tim/stdlib/GetJsonType.java index e44b7ce55..33d3b5b64 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/GetJsonType.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/GetJsonType.java @@ -53,10 +53,12 @@ public class GetJsonType extends SimpleReturnFunction { return new TFunctionSignature("%get_json_type", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final TValue data = values.get(0); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/GetVariableValue.java b/src/net/sourceforge/plantuml/tim/stdlib/GetVariableValue.java index ac9261793..082921acb 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/GetVariableValue.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/GetVariableValue.java @@ -52,10 +52,12 @@ public class GetVariableValue extends SimpleReturnFunction { return new TFunctionSignature("%get_variable_value", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final String name = values.get(0).toString(); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/GetVersion.java b/src/net/sourceforge/plantuml/tim/stdlib/GetVersion.java index 960fd1fb2..c206538cb 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/GetVersion.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/GetVersion.java @@ -53,10 +53,12 @@ public class GetVersion extends SimpleReturnFunction { return new TFunctionSignature("%version", 0); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 0; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { return TValue.fromString(Version.versionString()); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/Getenv.java b/src/net/sourceforge/plantuml/tim/stdlib/Getenv.java index 6e947d050..88fd8a638 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/Getenv.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/Getenv.java @@ -53,10 +53,12 @@ public class Getenv extends SimpleReturnFunction { return new TFunctionSignature("%getenv", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { // ::comment when __CORE__ diff --git a/src/net/sourceforge/plantuml/tim/stdlib/Hex2dec.java b/src/net/sourceforge/plantuml/tim/stdlib/Hex2dec.java index 622023df2..27f510248 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/Hex2dec.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/Hex2dec.java @@ -52,10 +52,12 @@ public class Hex2dec extends SimpleReturnFunction { return new TFunctionSignature("%hex2dec", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { try { diff --git a/src/net/sourceforge/plantuml/tim/stdlib/HslColor.java b/src/net/sourceforge/plantuml/tim/stdlib/HslColor.java index fae231c88..cc1173882 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/HslColor.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/HslColor.java @@ -55,10 +55,12 @@ public class HslColor extends SimpleReturnFunction { return new TFunctionSignature("%hsl_color", 3); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 3 || nbArg == 4; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final int h = values.get(0).toInt(); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/IntVal.java b/src/net/sourceforge/plantuml/tim/stdlib/IntVal.java index b9540e5dd..27e19db7a 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/IntVal.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/IntVal.java @@ -53,10 +53,12 @@ public class IntVal extends SimpleReturnFunction { return new TFunctionSignature("%intval", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final String s = values.get(0).toString(); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/InvokeProcedure.java b/src/net/sourceforge/plantuml/tim/stdlib/InvokeProcedure.java index 3ea3695aa..5331f7b2e 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/InvokeProcedure.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/InvokeProcedure.java @@ -54,6 +54,7 @@ public class InvokeProcedure implements TFunction { return new TFunctionSignature("%invoke_procedure", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg > 0; } @@ -75,6 +76,7 @@ public class InvokeProcedure implements TFunction { func.executeProcedureInternal(context, memory, sublist, named); } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) { throw new UnsupportedOperationException(); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/IsDark.java b/src/net/sourceforge/plantuml/tim/stdlib/IsDark.java index 23a4ccc67..efc4299da 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/IsDark.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/IsDark.java @@ -56,10 +56,12 @@ public class IsDark extends SimpleReturnFunction { return new TFunctionSignature("%is_dark", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final String colorString = values.get(0).toString(); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/IsLight.java b/src/net/sourceforge/plantuml/tim/stdlib/IsLight.java index b75e781ef..deff7b24d 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/IsLight.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/IsLight.java @@ -56,10 +56,12 @@ public class IsLight extends SimpleReturnFunction { return new TFunctionSignature("%is_light", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final String colorString = values.get(0).toString(); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/JsonKeyExists.java b/src/net/sourceforge/plantuml/tim/stdlib/JsonKeyExists.java index 64be7d60f..85eafc540 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/JsonKeyExists.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/JsonKeyExists.java @@ -54,10 +54,12 @@ public class JsonKeyExists extends SimpleReturnFunction { return new TFunctionSignature("%json_key_exists", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 2; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final TValue arg0 = values.get(0); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/Lighten.java b/src/net/sourceforge/plantuml/tim/stdlib/Lighten.java index 8519054c3..e4de200fe 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/Lighten.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/Lighten.java @@ -56,10 +56,12 @@ public class Lighten extends SimpleReturnFunction { return new TFunctionSignature("%lighten", 2); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 2; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final String colorString = values.get(0).toString(); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/LoadJson.java b/src/net/sourceforge/plantuml/tim/stdlib/LoadJson.java index 19dffd462..a5021562c 100755 --- a/src/net/sourceforge/plantuml/tim/stdlib/LoadJson.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/LoadJson.java @@ -102,10 +102,12 @@ public class LoadJson extends SimpleReturnFunction { return new TFunctionSignature("%load_json", 3); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1 || nbArg == 2 || nbArg == 3; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final String path = values.get(0).toString(); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/LogicalAnd.java b/src/net/sourceforge/plantuml/tim/stdlib/LogicalAnd.java index b674b4b46..4fe2d2a14 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/LogicalAnd.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/LogicalAnd.java @@ -52,10 +52,12 @@ public class LogicalAnd extends SimpleReturnFunction { return new TFunctionSignature("%and", 2); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg >= 2; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { for (TValue v : values) diff --git a/src/net/sourceforge/plantuml/tim/stdlib/LogicalNand.java b/src/net/sourceforge/plantuml/tim/stdlib/LogicalNand.java index c4f5ea8e0..9b018d3c0 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/LogicalNand.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/LogicalNand.java @@ -52,10 +52,12 @@ public class LogicalNand extends SimpleReturnFunction { return new TFunctionSignature("%nand", 2); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg >= 2; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { for (TValue v : values) diff --git a/src/net/sourceforge/plantuml/tim/stdlib/LogicalNor.java b/src/net/sourceforge/plantuml/tim/stdlib/LogicalNor.java index de7a99644..95c4e3c6d 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/LogicalNor.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/LogicalNor.java @@ -52,10 +52,12 @@ public class LogicalNor extends SimpleReturnFunction { return new TFunctionSignature("%nor", 2); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg >= 2; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { for (TValue v : values) diff --git a/src/net/sourceforge/plantuml/tim/stdlib/LogicalNot.java b/src/net/sourceforge/plantuml/tim/stdlib/LogicalNot.java index b2385ee38..ca6d5ab3a 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/LogicalNot.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/LogicalNot.java @@ -52,10 +52,12 @@ public class LogicalNot extends SimpleReturnFunction { return new TFunctionSignature("%not", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final boolean arg = values.get(0).toBoolean(); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/LogicalNxor.java b/src/net/sourceforge/plantuml/tim/stdlib/LogicalNxor.java index 61f8ab06a..e83c05b1e 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/LogicalNxor.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/LogicalNxor.java @@ -52,10 +52,12 @@ public class LogicalNxor extends SimpleReturnFunction { return new TFunctionSignature("%nxor", 2); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg >= 2; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { int cpt = 0; diff --git a/src/net/sourceforge/plantuml/tim/stdlib/LogicalOr.java b/src/net/sourceforge/plantuml/tim/stdlib/LogicalOr.java index 3460a3683..41026ac89 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/LogicalOr.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/LogicalOr.java @@ -52,10 +52,12 @@ public class LogicalOr extends SimpleReturnFunction { return new TFunctionSignature("%or", 2); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg >= 2; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { for (TValue v : values) diff --git a/src/net/sourceforge/plantuml/tim/stdlib/LogicalXor.java b/src/net/sourceforge/plantuml/tim/stdlib/LogicalXor.java index 1736b6cde..14ad07a5e 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/LogicalXor.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/LogicalXor.java @@ -52,10 +52,12 @@ public class LogicalXor extends SimpleReturnFunction { return new TFunctionSignature("%xor", 2); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg >= 2; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { int cpt = 0; diff --git a/src/net/sourceforge/plantuml/tim/stdlib/Lower.java b/src/net/sourceforge/plantuml/tim/stdlib/Lower.java index 463c272d8..d0dbcb731 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/Lower.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/Lower.java @@ -50,10 +50,12 @@ public class Lower extends SimpleReturnFunction { return new TFunctionSignature("%lower", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) { return TValue.fromString(values.get(0).toString().toLowerCase()); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/Newline.java b/src/net/sourceforge/plantuml/tim/stdlib/Newline.java index 8b3cc6659..2f5c7abb7 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/Newline.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/Newline.java @@ -50,10 +50,12 @@ public class Newline extends SimpleReturnFunction { return new TFunctionSignature("%newline", 0); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 0; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) { return TValue.fromString("\n"); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/Now.java b/src/net/sourceforge/plantuml/tim/stdlib/Now.java index 866e90f0e..c90eb25d1 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/Now.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/Now.java @@ -52,10 +52,12 @@ public class Now extends SimpleReturnFunction { return new TFunctionSignature("%now", 0); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 0; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final long now = System.currentTimeMillis() / 1000L; diff --git a/src/net/sourceforge/plantuml/tim/stdlib/Ord.java b/src/net/sourceforge/plantuml/tim/stdlib/Ord.java index 6e5262189..bf0f7d767 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/Ord.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/Ord.java @@ -52,10 +52,12 @@ public class Ord extends SimpleReturnFunction { return new TFunctionSignature("%ord", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { try { diff --git a/src/net/sourceforge/plantuml/tim/stdlib/RandomFunction.java b/src/net/sourceforge/plantuml/tim/stdlib/RandomFunction.java index d33a0af09..a165f00a4 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/RandomFunction.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/RandomFunction.java @@ -53,12 +53,14 @@ public class RandomFunction extends SimpleReturnFunction { return new TFunctionSignature("%random", 2); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 0 || nbArg == 1 || nbArg == 2; } private final Random random = new Random(); + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { switch (values.size()) { diff --git a/src/net/sourceforge/plantuml/tim/stdlib/RetrieveProcedure.java b/src/net/sourceforge/plantuml/tim/stdlib/RetrieveProcedure.java index 94a98ec81..fa75ab946 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/RetrieveProcedure.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/RetrieveProcedure.java @@ -54,10 +54,12 @@ public class RetrieveProcedure extends SimpleReturnFunction { return new TFunctionSignature("%retrieve_procedure", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg > 0; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final String fname = values.get(0).toString(); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/ReverseColor.java b/src/net/sourceforge/plantuml/tim/stdlib/ReverseColor.java index 3a5d5e718..6084e16d1 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/ReverseColor.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/ReverseColor.java @@ -55,10 +55,12 @@ public class ReverseColor extends SimpleReturnFunction { return new TFunctionSignature("%reverse_color", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final String colorString = values.get(0).toString(); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/ReverseHsluvColor.java b/src/net/sourceforge/plantuml/tim/stdlib/ReverseHsluvColor.java index d9599aecc..6a42843f7 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/ReverseHsluvColor.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/ReverseHsluvColor.java @@ -55,10 +55,12 @@ public class ReverseHsluvColor extends SimpleReturnFunction { return new TFunctionSignature("%reverse_hsluv_color", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final String colorString = values.get(0).toString(); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/SetVariableValue.java b/src/net/sourceforge/plantuml/tim/stdlib/SetVariableValue.java index 31897f608..a35ec7786 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/SetVariableValue.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/SetVariableValue.java @@ -53,10 +53,12 @@ public class SetVariableValue extends SimpleReturnFunction { return new TFunctionSignature("%set_variable_value", 2); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 2; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { // if (memory instanceof TMemoryLocal) { diff --git a/src/net/sourceforge/plantuml/tim/stdlib/Size.java b/src/net/sourceforge/plantuml/tim/stdlib/Size.java index ecc0891bf..0794bca42 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/Size.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/Size.java @@ -55,10 +55,12 @@ public class Size extends SimpleReturnFunction { return new TFunctionSignature("%size", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final TValue value = values.get(0); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/SplitStr.java b/src/net/sourceforge/plantuml/tim/stdlib/SplitStr.java index 2158332ee..d9aa2fded 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/SplitStr.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/SplitStr.java @@ -54,10 +54,12 @@ public class SplitStr extends SimpleReturnFunction { return new TFunctionSignature("%splitstr", 3); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 2; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final JsonArray result = new JsonArray(); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/StringFunction.java b/src/net/sourceforge/plantuml/tim/stdlib/StringFunction.java index ef87d8cb9..f2b972a80 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/StringFunction.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/StringFunction.java @@ -50,10 +50,12 @@ public class StringFunction extends SimpleReturnFunction { return new TFunctionSignature("%string", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) { return TValue.fromString(values.get(0).toString()); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/Strlen.java b/src/net/sourceforge/plantuml/tim/stdlib/Strlen.java index 432c6a42d..3e1578fba 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/Strlen.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/Strlen.java @@ -52,10 +52,12 @@ public class Strlen extends SimpleReturnFunction { return new TFunctionSignature("%strlen", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { return TValue.fromInt(values.get(0).toString().length()); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/Strpos.java b/src/net/sourceforge/plantuml/tim/stdlib/Strpos.java index 7b7b58f1b..09a5c43a9 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/Strpos.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/Strpos.java @@ -52,10 +52,12 @@ public class Strpos extends SimpleReturnFunction { return new TFunctionSignature("%strpos", 2); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 2; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final String full = values.get(0).toString(); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/Substr.java b/src/net/sourceforge/plantuml/tim/stdlib/Substr.java index 2a94fcab6..ba0c0e8ce 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/Substr.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/Substr.java @@ -52,10 +52,12 @@ public class Substr extends SimpleReturnFunction { return new TFunctionSignature("%substr", 3); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 2 || nbArg == 3; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final String full = values.get(0).toString(); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/Upper.java b/src/net/sourceforge/plantuml/tim/stdlib/Upper.java index f3901fb8a..98caf89ff 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/Upper.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/Upper.java @@ -50,10 +50,12 @@ public class Upper extends SimpleReturnFunction { return new TFunctionSignature("%upper", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) { return TValue.fromString(values.get(0).toString().toUpperCase()); diff --git a/src/net/sourceforge/plantuml/tim/stdlib/VariableExists.java b/src/net/sourceforge/plantuml/tim/stdlib/VariableExists.java index f19110114..a63730447 100644 --- a/src/net/sourceforge/plantuml/tim/stdlib/VariableExists.java +++ b/src/net/sourceforge/plantuml/tim/stdlib/VariableExists.java @@ -52,10 +52,12 @@ public class VariableExists extends SimpleReturnFunction { return new TFunctionSignature("%variable_exists", 1); } + @Override public boolean canCover(int nbArg, Set namedArgument) { return nbArg == 1; } + @Override public TValue executeReturnFunction(TContext context, TMemory memory, LineLocation location, List values, Map named) throws EaterException, EaterExceptionLocated { final String name = values.get(0).toString();