1
0
mirror of https://github.com/octoleo/plantuml.git synced 2024-11-21 20:45:10 +00:00

refactor: prepare preprocessor error improvement (almost finished :-)

https://github.com/plantuml/plantuml/pull/1668
This commit is contained in:
Arnaud Roques 2024-02-22 20:06:59 +01:00
parent 6329d9a8d5
commit a48dd52d9f
130 changed files with 390 additions and 538 deletions

View File

@ -1,4 +1,4 @@
# Warning, "version" should be the same in gradle.properties and Version.java
# Any idea anyone how to magically synchronize those :-) ?
version = 1.2024.4beta3
version = 1.2024.4beta4
org.gradle.workers.max = 3

View File

@ -56,7 +56,7 @@ import net.sourceforge.plantuml.security.SFile;
import net.sourceforge.plantuml.security.SecurityProfile;
import net.sourceforge.plantuml.security.SecurityUtils;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TMemory;
import net.sourceforge.plantuml.tim.TVariableScope;
import net.sourceforge.plantuml.utils.Log;
@ -82,7 +82,7 @@ public class Defines implements Truth {
return new Defines();
}
public void copyTo(TMemory memory, StringLocated location) throws EaterException {
public void copyTo(TMemory memory, StringLocated location) throws EaterExceptionLocated {
for (Entry<String, Define> ent : values.entrySet()) {
final String name = ent.getKey();
final Define def = ent.getValue();

View File

@ -42,13 +42,13 @@ import java.util.List;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.EaterStartsub;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TMemory;
public class Sub {
// ::remove folder when __HAXE__
// ::remove folder when __HAXE__
private final String name;
private final List<StringLocated> lines = new ArrayList<>();
@ -79,7 +79,7 @@ public class Sub {
}
public static Sub fromFile(ReadLine reader, String blocname, TContext context, TMemory memory)
throws IOException, EaterException {
throws IOException, EaterExceptionLocated {
Sub result = null;
StringLocated s = null;
boolean skip = false;

View File

@ -53,8 +53,7 @@ import net.sourceforge.plantuml.preproc.StartDiagramExtractReader;
import net.sourceforge.plantuml.preproc.Stdlib;
import net.sourceforge.plantuml.security.SURL;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.utils.LineLocation;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.utils.Log;
public class PreprocessorUtils {
@ -134,7 +133,7 @@ public class PreprocessorUtils {
}
public static ReadLine getReaderIncludeUrl(final SURL url, StringLocated s, String suf, Charset charset)
throws EaterException {
throws EaterExceptionLocated {
try {
if (StartDiagramExtractReader.containsStartDiagram(url, s, charset))
return StartDiagramExtractReader.build(url, s, suf, charset);
@ -142,16 +141,16 @@ public class PreprocessorUtils {
return getReaderInclude(url, s, charset);
} catch (IOException e) {
Logme.error(e);
throw EaterException.located("Cannot open URL " + e.getMessage(), s);
throw EaterExceptionLocated.located("Cannot open URL " + e.getMessage(), s);
}
}
public static ReadLine getReaderInclude(SURL url, StringLocated s, Charset charset)
throws EaterException, UnsupportedEncodingException {
throws EaterExceptionLocated, UnsupportedEncodingException {
final InputStream is = url.openStream();
if (is == null)
throw EaterException.located("Cannot open URL", s);
throw EaterExceptionLocated.located("Cannot open URL", s);
return ReadLineReader.create(new InputStreamReader(is, charset), url.toString(), s.getLocation());
}

View File

@ -64,19 +64,19 @@ public abstract class Eater {
return stringLocated;
}
public abstract void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated;
public abstract void analyze(TContext context, TMemory memory) throws EaterExceptionLocated;
public int getCurrentPosition() {
return i;
}
final protected String eatAllToEnd() throws EaterException {
final protected String eatAllToEnd() throws EaterExceptionLocated {
final String result = stringLocated.getString().substring(i);
i = stringLocated.length();
return result;
}
final public TValue eatExpression(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated {
final public TValue eatExpression(TContext context, TMemory memory) throws EaterExceptionLocated {
final char ch = peekChar();
if (ch == '{' || ch == '[') {
final String data = eatAllToEnd();
@ -89,23 +89,22 @@ public abstract class Eater {
return tokenStack.getResult(getStringLocated(), context, memory);
}
final protected TokenStack eatTokenStack() throws EaterException {
final protected TokenStack eatTokenStack() throws EaterExceptionLocated {
final TokenStack tokenStack = new TokenStack();
addIntoTokenStack(tokenStack, false);
if (tokenStack.size() == 0)
throw EaterException.located("Missing expression", stringLocated);
throw EaterExceptionLocated.located("Missing expression", stringLocated);
return tokenStack;
}
final protected TValue eatExpressionStopAtColon(TContext context, TMemory memory)
throws EaterException, EaterExceptionLocated {
final protected TValue eatExpressionStopAtColon(TContext context, TMemory memory) throws EaterExceptionLocated {
final TokenStack tokenStack = new TokenStack();
addIntoTokenStack(tokenStack, true);
return tokenStack.getResult(getStringLocated(), context, memory);
}
final protected void addIntoTokenStack(TokenStack tokenStack, boolean stopAtColon) throws EaterException {
final protected void addIntoTokenStack(TokenStack tokenStack, boolean stopAtColon) throws EaterExceptionLocated {
Token lastToken = null;
while (true) {
final Token token = TokenType.eatOneToken(lastToken, this, stopAtColon);
@ -118,10 +117,10 @@ public abstract class Eater {
}
}
final public String eatAndGetQuotedString() throws EaterException {
final public String eatAndGetQuotedString() throws EaterExceptionLocated {
final char separator = peekChar();
if (TLineType.isQuote(separator) == false)
throw EaterException.located("quote10", stringLocated);
throw EaterExceptionLocated.located("quote10", stringLocated);
checkAndEatChar(separator);
final StringBuilder value = new StringBuilder();
@ -130,7 +129,7 @@ public abstract class Eater {
return value.toString();
}
final protected String eatAndGetOptionalQuotedString() throws EaterException {
final protected String eatAndGetOptionalQuotedString() throws EaterExceptionLocated {
final char quote = peekChar();
if (TLineType.isQuote(quote))
return eatAndGetQuotedString();
@ -142,7 +141,7 @@ public abstract class Eater {
while (true) {
char ch = peekChar();
if (ch == 0)
throw EaterException.located("until001", stringLocated);
throw EaterExceptionLocated.located("until001", stringLocated);
if (level == 0 && (ch == ',' || ch == ')'))
return value.toString().trim();
@ -160,7 +159,7 @@ public abstract class Eater {
// return value.toString();
}
final public String eatAndGetNumber() throws EaterException {
final public String eatAndGetNumber() throws EaterExceptionLocated {
final StringBuilder result = new StringBuilder();
while (true) {
final char ch = peekChar();
@ -176,7 +175,7 @@ public abstract class Eater {
}
}
final public String eatAndGetSpaces() throws EaterException {
final public String eatAndGetSpaces() throws EaterExceptionLocated {
final StringBuilder result = new StringBuilder();
while (true) {
final char ch = peekChar();
@ -187,19 +186,19 @@ public abstract class Eater {
}
}
final protected String eatAndGetVarname() throws EaterException {
final protected String eatAndGetVarname() throws EaterExceptionLocated {
final StringBuilder varname = new StringBuilder("" + eatOneChar());
if (TLineType.isLetterOrUnderscoreOrDollar(varname.charAt(0)) == false)
throw EaterException.located("a002", stringLocated);
throw EaterExceptionLocated.located("a002", stringLocated);
addUpToLastLetterOrUnderscoreOrDigit(varname);
return varname.toString();
}
final protected String eatAndGetFunctionName() throws EaterException {
final protected String eatAndGetFunctionName() throws EaterExceptionLocated {
final StringBuilder varname = new StringBuilder("" + eatOneChar());
if (TLineType.isLetterOrUnderscoreOrDollar(varname.charAt(0)) == false)
throw EaterException.located("a003", stringLocated);
throw EaterExceptionLocated.located("a003", stringLocated);
addUpToLastLetterOrUnderscoreOrDigit(varname);
return varname.toString();
@ -247,14 +246,14 @@ public abstract class Eater {
return ch;
}
final protected void checkAndEatChar(char ch) throws EaterException {
final protected void checkAndEatChar(char ch) throws EaterExceptionLocated {
if (i >= stringLocated.length() || stringLocated.charAt(i) != ch)
throw EaterException.located("a001", stringLocated);
throw EaterExceptionLocated.located("a001", stringLocated);
i++;
}
final protected boolean safeCheckAndEatChar(char ch) throws EaterException {
final protected boolean safeCheckAndEatChar(char ch) throws EaterExceptionLocated {
if (i >= stringLocated.length() || stringLocated.charAt(i) != ch)
return false;
@ -262,7 +261,7 @@ public abstract class Eater {
return true;
}
final protected void optionallyEatChar(char ch) throws EaterException {
final protected void optionallyEatChar(char ch) throws EaterExceptionLocated {
if (i >= stringLocated.length() || stringLocated.charAt(i) != ch)
return;
@ -270,7 +269,7 @@ public abstract class Eater {
i++;
}
final protected void checkAndEatChar(String s) throws EaterException {
final protected void checkAndEatChar(String s) throws EaterExceptionLocated {
for (int j = 0; j < s.length(); j++)
checkAndEatChar(s.charAt(j));
@ -299,8 +298,7 @@ public abstract class Eater {
}
final protected TFunctionImpl eatDeclareFunction(TContext context, TMemory memory, boolean unquoted,
StringLocated location, boolean allowNoParenthesis, TFunctionType type)
throws EaterException, EaterExceptionLocated {
StringLocated location, boolean allowNoParenthesis, TFunctionType type) throws EaterExceptionLocated {
final List<TFunctionArgument> args = new ArrayList<>();
final String functionName = eatAndGetFunctionName();
skipSpaces();
@ -308,7 +306,7 @@ public abstract class Eater {
if (allowNoParenthesis)
return new TFunctionImpl(functionName, args, unquoted, type);
throw EaterException.located("Missing opening parenthesis", stringLocated);
throw EaterExceptionLocated.located("Missing opening parenthesis", stringLocated);
}
while (true) {
skipSpaces();
@ -333,7 +331,7 @@ public abstract class Eater {
checkAndEatChar(")");
break;
} else {
throw EaterException.located("Error in function definition", stringLocated);
throw EaterExceptionLocated.located("Error in function definition", stringLocated);
}
}
skipSpaces();
@ -341,7 +339,7 @@ public abstract class Eater {
}
final protected TFunctionImpl eatDeclareReturnFunctionWithOptionalReturn(TContext context, TMemory memory,
boolean unquoted, StringLocated location) throws EaterException, EaterExceptionLocated {
boolean unquoted, StringLocated location) throws EaterExceptionLocated {
final TFunctionImpl result = eatDeclareFunction(context, memory, unquoted, location, false,
TFunctionType.RETURN_FUNCTION);
if (peekChar() == 'r') {
@ -359,7 +357,7 @@ public abstract class Eater {
}
final protected TFunctionImpl eatDeclareProcedure(TContext context, TMemory memory, boolean unquoted,
StringLocated location) throws EaterException, EaterExceptionLocated {
StringLocated location) throws EaterExceptionLocated {
final TFunctionImpl result = eatDeclareFunction(context, memory, unquoted, location, false,
TFunctionType.PROCEDURE);
return result;

View File

@ -44,7 +44,7 @@ public class EaterAffectation extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!");
skipSpaces();

View File

@ -44,7 +44,7 @@ public class EaterAffectationDefine extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!define");
skipSpaces();

View File

@ -44,7 +44,7 @@ public class EaterAssert extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!assert");
skipSpaces();
@ -55,9 +55,9 @@ public class EaterAssert extends Eater {
if (ch == ':') {
checkAndEatChar(':');
final TValue message = eatExpression(context, memory);
throw EaterException.located("Assertion error : " + message.toString(), getStringLocated());
throw EaterExceptionLocated.located("Assertion error : " + message.toString(), getStringLocated());
}
throw EaterException.located("Assertion error", getStringLocated());
throw EaterExceptionLocated.located("Assertion error", getStringLocated());
}
}

View File

@ -48,7 +48,7 @@ public class EaterDeclareProcedure extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!");
boolean unquoted = false;

View File

@ -48,7 +48,7 @@ public class EaterDeclareReturnFunction extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!");
boolean unquoted = false;

View File

@ -43,7 +43,7 @@ public class EaterDumpMemory extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!dump_memory");
skipSpaces();

View File

@ -46,7 +46,7 @@ public class EaterElseIf extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!elseif");
skipSpaces();

View File

@ -1,63 +0,0 @@
/* ========================================================================
* PlantUML : a free UML diagram generator
* ========================================================================
*
* (C) Copyright 2009-2024, Arnaud Roques
*
* Project Info: https://plantuml.com
*
* If you like this project or if you find it useful, you can support us at:
*
* https://plantuml.com/patreon (only 1$ per month!)
* https://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.tim;
import net.sourceforge.plantuml.text.StringLocated;
public class EaterException extends Exception {
private final String message;
private EaterException(String message, StringLocated location) {
this.message = message;
}
public static EaterException unlocated(String message, StringLocated location) {
return new EaterException(message, location);
}
public static EaterException located(String message, StringLocated location) {
return unlocated(message, location);
}
public final String getMessage() {
return message;
}
public EaterExceptionLocated withLocation(StringLocated sl) {
return EaterExceptionLocated.located(message, sl);
}
}

View File

@ -52,6 +52,10 @@ public class EaterExceptionLocated extends Exception {
return new EaterExceptionLocated(message, Objects.requireNonNull(location));
}
public static EaterExceptionLocated unlocated(String message, StringLocated location) {
return new EaterExceptionLocated(message, Objects.requireNonNull(location));
}
public final String getMessage() {
return message;
}

View File

@ -48,7 +48,7 @@ public class EaterForeach extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!foreach");
skipSpaces();

View File

@ -58,7 +58,7 @@ public class EaterFunctionCall extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipUntilChar('(');
checkAndEatChar('(');
skipSpaces();
@ -119,9 +119,10 @@ public class EaterFunctionCall extends Eater {
break;
}
if (unquoted) {
throw EaterException.located("unquoted function/procedure cannot use expression.", getStringLocated());
throw EaterExceptionLocated.located("unquoted function/procedure cannot use expression.",
getStringLocated());
}
throw EaterException.located("call001", getStringLocated());
throw EaterExceptionLocated.located("call001", getStringLocated());
}
}
@ -133,7 +134,7 @@ public class EaterFunctionCall extends Eater {
return Collections.unmodifiableMap(namedArguments);
}
public final String getEndOfLine() throws EaterException {
public final String getEndOfLine() throws EaterExceptionLocated {
return this.eatAllToEnd();
}

View File

@ -46,7 +46,7 @@ public class EaterIf extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!if");
skipSpaces();

View File

@ -48,7 +48,7 @@ public class EaterIfdef extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!ifdef");
skipSpaces();

View File

@ -46,7 +46,7 @@ public class EaterIfndef extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!ifndef");
skipSpaces();

View File

@ -45,7 +45,7 @@ public class EaterImport extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!import");
skipSpaces();

View File

@ -47,7 +47,7 @@ public class EaterInclude extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!include");
final char peekChar = peekChar();

View File

@ -45,7 +45,7 @@ public class EaterIncludeDef extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!includedef");
skipSpaces();

View File

@ -45,7 +45,7 @@ public class EaterIncludesub extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!includesub");
skipSpaces();

View File

@ -45,7 +45,7 @@ public class EaterLegacyDefine extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!define");
skipSpaces();

View File

@ -45,7 +45,7 @@ public class EaterLegacyDefineLong extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!definelong");
skipSpaces();

View File

@ -44,7 +44,7 @@ public class EaterLog extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!log");
skipSpaces();

View File

@ -46,7 +46,7 @@ public class EaterReturn extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!return");
skipSpaces();

View File

@ -45,13 +45,13 @@ public class EaterStartsub extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!startsub");
skipSpaces();
this.subname = eatAllToEnd();
if (this.subname.matches("\\w+") == false)
throw EaterException.located("Bad sub name", getStringLocated());
throw EaterExceptionLocated.located("Bad sub name", getStringLocated());
}

View File

@ -67,7 +67,7 @@ public class EaterTheme extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!theme");
skipSpaces();
@ -85,7 +85,7 @@ public class EaterTheme extends Eater {
}
public final ReadLine getTheme() throws EaterException {
public final ReadLine getTheme() throws EaterExceptionLocated {
if (from == null) {
try {
final ReadLine reader = ThemeUtils.getReaderTheme(realName);
@ -101,24 +101,24 @@ public class EaterTheme extends Eater {
} catch (IOException e) {
Logme.error(e);
}
throw EaterException.located("Cannot load " + realName, getStringLocated());
throw EaterExceptionLocated.located("Cannot load " + realName, getStringLocated());
}
if (from.startsWith("<") && from.endsWith(">")) {
final ReadLine reader = ThemeUtils.getReaderTheme(realName, from);
if (reader == null)
throw EaterException.located("No such theme " + realName + " in " + from, getStringLocated());
throw EaterExceptionLocated.located("No such theme " + realName + " in " + from, getStringLocated());
return reader;
} else if (from.startsWith("http://") || from.startsWith("https://")) {
final SURL url = SURL.create(ThemeUtils.getFullPath(from, realName));
if (url == null)
throw EaterException.located("Cannot open URL", getStringLocated());
throw EaterExceptionLocated.located("Cannot open URL", getStringLocated());
try {
return PreprocessorUtils.getReaderInclude(url, getStringLocated(), UTF_8);
} catch (UnsupportedEncodingException e) {
Logme.error(e);
throw EaterException.located("Cannot decode charset", getStringLocated());
throw EaterExceptionLocated.located("Cannot decode charset", getStringLocated());
}
}
@ -126,12 +126,12 @@ public class EaterTheme extends Eater {
final FileWithSuffix file = context.getFileWithSuffix(from, realName);
final Reader tmp = file.getReader(UTF_8);
if (tmp == null)
throw EaterException.located("No such theme " + realName, getStringLocated());
throw EaterExceptionLocated.located("No such theme " + realName, getStringLocated());
return ReadLineReader.create(tmp, "theme " + realName);
} catch (IOException e) {
Logme.error(e);
throw EaterException.located("Cannot load " + realName, getStringLocated());
throw EaterExceptionLocated.located("Cannot load " + realName, getStringLocated());
}
}

View File

@ -43,7 +43,7 @@ public class EaterUndef extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!undef");
skipSpaces();

View File

@ -46,7 +46,7 @@ public class EaterWhile extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
skipSpaces();
checkAndEatChar("!while");
skipSpaces();

View File

@ -61,7 +61,7 @@ public class ExecutionContextWhile {
}
public TValue conditionValue(StringLocated location, TContext context, TMemory memory)
throws EaterException, EaterExceptionLocated {
throws EaterExceptionLocated {
return whileExpression.getResult(location, context, memory);
}

View File

@ -79,12 +79,12 @@ public abstract class ExecutionContexts {
return allForeachs.pollLast();
}
public boolean areAllIfOk(TContext context, TMemory memory) throws EaterException {
for (ExecutionContextIf conditionalContext : allIfs) {
if (conditionalContext.conditionIsOkHere() == false) {
public boolean areAllIfOk(TContext context, TMemory memory) throws EaterExceptionLocated {
for (ExecutionContextIf conditionalContext : allIfs)
if (conditionalContext.conditionIsOkHere() == false)
return false;
}
}
return true;
}

View File

@ -95,9 +95,9 @@ public class FunctionsSet {
}
public void executeLegacyDefine(TContext context, TMemory memory, StringLocated s)
throws EaterException, EaterExceptionLocated {
throws EaterExceptionLocated {
if (this.pendingFunction != null)
throw EaterException.located("already0048", s);
throw EaterExceptionLocated.located("already0048", s);
final EaterLegacyDefine legacyDefine = new EaterLegacyDefine(s);
legacyDefine.analyze(context, memory);
@ -107,9 +107,9 @@ public class FunctionsSet {
}
public void executeLegacyDefineLong(TContext context, TMemory memory, StringLocated s)
throws EaterException, EaterExceptionLocated {
throws EaterExceptionLocated {
if (this.pendingFunction != null)
throw EaterException.located("already0068", s);
throw EaterExceptionLocated.located("already0068", s);
final EaterLegacyDefineLong legacyDefineLong = new EaterLegacyDefineLong(s);
legacyDefineLong.analyze(context, memory);
@ -117,9 +117,9 @@ public class FunctionsSet {
}
public void executeDeclareReturnFunction(TContext context, TMemory memory, StringLocated s)
throws EaterException, EaterExceptionLocated {
throws EaterExceptionLocated {
if (this.pendingFunction != null)
throw EaterException.located("already0068", s);
throw EaterExceptionLocated.located("already0068", s);
final EaterDeclareReturnFunction declareFunction = new EaterDeclareReturnFunction(s);
declareFunction.analyze(context, memory);
@ -127,7 +127,7 @@ public class FunctionsSet {
final TFunctionSignature declaredSignature = declareFunction.getFunction().getSignature();
final TFunction previous = this.functions.get(declaredSignature);
if (previous != null && (finalFlag || this.functionsFinal.contains(declaredSignature)))
throw EaterException.located("This function is already defined", s);
throw EaterExceptionLocated.located("This function is already defined", s);
if (finalFlag)
this.functionsFinal.add(declaredSignature);
@ -140,9 +140,9 @@ public class FunctionsSet {
}
public void executeDeclareProcedure(TContext context, TMemory memory, StringLocated s)
throws EaterException, EaterExceptionLocated {
throws EaterExceptionLocated {
if (this.pendingFunction != null)
throw EaterException.located("already0068", s);
throw EaterExceptionLocated.located("already0068", s);
final EaterDeclareProcedure declareFunction = new EaterDeclareProcedure(s);
declareFunction.analyze(context, memory);
@ -150,7 +150,7 @@ public class FunctionsSet {
final TFunctionSignature declaredSignature = declareFunction.getFunction().getSignature();
final TFunction previous = this.functions.get(declaredSignature);
if (previous != null && (finalFlag || this.functionsFinal.contains(declaredSignature)))
throw EaterException.located("This function is already defined", s);
throw EaterExceptionLocated.located("This function is already defined", s);
if (finalFlag)
this.functionsFinal.add(declaredSignature);

View File

@ -43,7 +43,7 @@ public class StringEater extends Eater {
}
@Override
public void analyze(TContext context, TMemory memory) throws EaterException, EaterExceptionLocated {
public void analyze(TContext context, TMemory memory) throws EaterExceptionLocated {
throw new UnsupportedOperationException();
}

View File

@ -236,7 +236,7 @@ public class TContext {
public Knowledge asKnowledge(final TMemory memory, final LineLocation location) {
return new Knowledge() {
public TValue getVariable(String name) throws EaterException, EaterExceptionLocated {
public TValue getVariable(String name) throws EaterExceptionLocated {
if (name.contains(".") || name.contains("[")) {
final TValue result = fromJson(memory, name, location);
return result;
@ -250,8 +250,7 @@ public class TContext {
};
}
private TValue fromJson(TMemory memory, String name, LineLocation location)
throws EaterException, EaterExceptionLocated {
private TValue fromJson(TMemory memory, String name, LineLocation location) throws EaterExceptionLocated {
final String result = applyFunctionsAndVariables(memory, new StringLocated(name, location));
try {
final JsonValue json = Json.parse(result);
@ -284,23 +283,19 @@ public class TContext {
final CodeIterator it = buildCodeIterator(memory, body);
StringLocated s = null;
try {
while ((s = it.peek()) != null) {
final TValue result = executeOneLineSafe(memory, s, ftype, modeSpecial);
if (result != null)
return result;
while ((s = it.peek()) != null) {
final TValue result = executeOneLineSafe(memory, s, ftype, modeSpecial);
if (result != null)
return result;
it.next();
}
return null;
} catch (EaterException e) {
throw e.withLocation(s);
it.next();
}
return null;
}
private void executeLinesInternal(TMemory memory, List<StringLocated> body, TFunctionType ftype)
throws EaterExceptionLocated, EaterException {
throws EaterExceptionLocated {
final CodeIterator it = buildCodeIterator(memory, body);
StringLocated s = null;
@ -312,22 +307,20 @@ public class TContext {
}
private TValue executeOneLineSafe(TMemory memory, StringLocated s, TFunctionType ftype, boolean modeSpecial)
throws EaterException, EaterExceptionLocated {
throws EaterExceptionLocated {
try {
this.debug.add(s);
return executeOneLineNotSafe(memory, s, ftype, modeSpecial);
} catch (Exception e) {
if (e instanceof EaterException)
throw (EaterException) e;
if (e instanceof EaterExceptionLocated)
throw (EaterExceptionLocated) e;
Logme.error(e);
throw EaterException.located("Fatal parsing error", s);
throw EaterExceptionLocated.located("Fatal parsing error", s);
}
}
private TValue executeOneLineNotSafe(TMemory memory, StringLocated s, TFunctionType ftype, boolean modeSpecial)
throws EaterException, EaterExceptionLocated {
throws EaterExceptionLocated {
final TLineType type = s.getType();
if (type == TLineType.INCLUDESUB) {
@ -382,11 +375,11 @@ public class TContext {
} else if (s.getString().matches("^\\s+$")) {
return null;
} else {
throw EaterException.located("Compile Error " + ftype + " " + type, s);
throw EaterExceptionLocated.located("Compile Error " + ftype + " " + type, s);
}
}
private void addPlain(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated {
private void addPlain(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final StringLocated tmp[] = applyFunctionsAndVariablesInternal(memory, s);
if (tmp != null) {
if (pendingAdd != null) {
@ -399,32 +392,31 @@ public class TContext {
}
}
private void simulatePlain(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated {
private void simulatePlain(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final StringLocated ignored[] = applyFunctionsAndVariablesInternal(memory, s);
}
private void executeAffectationDefine(TMemory memory, StringLocated s)
throws EaterException, EaterExceptionLocated {
private void executeAffectationDefine(TMemory memory, StringLocated s) throws EaterExceptionLocated {
new EaterAffectationDefine(s).analyze(this, memory);
}
private void executeDumpMemory(TMemory memory, StringLocated s) throws EaterException {
private void executeDumpMemory(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterDumpMemory condition = new EaterDumpMemory(s);
condition.analyze(this, memory);
}
private void executeAssert(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated {
private void executeAssert(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterAssert condition = new EaterAssert(s);
condition.analyze(this, memory);
}
private void executeUndef(TMemory memory, StringLocated s) throws EaterException {
private void executeUndef(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterUndef undef = new EaterUndef(s);
undef.analyze(this, memory);
}
private StringLocated[] applyFunctionsAndVariablesInternal(TMemory memory, StringLocated located)
throws EaterException, EaterExceptionLocated {
throws EaterExceptionLocated {
if (memory.isEmpty() && functionsSet.size() == 0)
return new StringLocated[] { located };
@ -442,8 +434,7 @@ public class TContext {
private String pendingAdd = null;
public String applyFunctionsAndVariables(TMemory memory, final StringLocated str)
throws EaterException, EaterExceptionLocated {
public String applyFunctionsAndVariables(TMemory memory, final StringLocated str) throws EaterExceptionLocated {
// https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore%E2%80%93Horspool_algorithm
// https://stackoverflow.com/questions/1326682/java-replacing-multiple-different-substring-in-a-string-at-once-or-in-the-most
// https://en.wikipedia.org/wiki/String-searching_algorithm
@ -465,7 +456,7 @@ public class TContext {
call.getNamedArguments().keySet());
final TFunction function = functionsSet.getFunctionSmart(signature);
if (function == null)
throw EaterException.located("Function not found " + presentFunction, str);
throw EaterExceptionLocated.located("Function not found " + presentFunction, str);
if (function.getFunctionType() == TFunctionType.PROCEDURE) {
this.pendingAdd = result.toString();
@ -503,11 +494,11 @@ public class TContext {
}
private void executeVoid3(StringLocated location, TMemory memory, TFunction function, EaterFunctionCall call)
throws EaterException, EaterExceptionLocated {
throws EaterExceptionLocated {
function.executeProcedureInternal(this, memory, location, call.getValues(), call.getNamedArguments());
}
private void executeImport(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated {
private void executeImport(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterImport _import = new EaterImport(s.getTrimmed());
_import.analyze(this, memory);
@ -520,13 +511,13 @@ public class TContext {
}
} catch (IOException e) {
Logme.error(e);
throw EaterException.located("Cannot import " + e.getMessage(), s);
throw EaterExceptionLocated.located("Cannot import " + e.getMessage(), s);
}
throw EaterException.located("Cannot import", s);
throw EaterExceptionLocated.located("Cannot import", s);
}
private void executeLog(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated {
private void executeLog(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterLog log = new EaterLog(s.getTrimmed());
log.analyze(this, memory);
}
@ -538,7 +529,7 @@ public class TContext {
}
private void executeIncludesub(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated {
private void executeIncludesub(TMemory memory, StringLocated s) throws EaterExceptionLocated {
ImportedFiles saveImportedFiles = null;
try {
final EaterIncludesub include = new EaterIncludesub(s.getTrimmed());
@ -556,7 +547,7 @@ public class TContext {
this.importedFiles = this.importedFiles.withCurrentDir(f2.getParentFile());
final Reader reader = f2.getReader(charset);
if (reader == null)
throw EaterException.located("cannot include " + what, s);
throw EaterExceptionLocated.located("cannot include " + what, s);
try {
ReadLine readerline = ReadLineReader.create(reader, what, s.getLocation());
@ -568,14 +559,14 @@ public class TContext {
}
} catch (IOException e) {
Logme.error(e);
throw EaterException.located("cannot include " + what, s);
throw EaterExceptionLocated.located("cannot include " + what, s);
}
}
if (sub == null)
sub = subs.get(what);
if (sub == null)
throw EaterException.located("cannot include " + what, s);
throw EaterExceptionLocated.located("cannot include " + what, s);
executeLinesInternal(memory, sub.lines(), null);
} finally {
@ -585,7 +576,7 @@ public class TContext {
}
}
private void executeIncludeDef(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated {
private void executeIncludeDef(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterIncludeDef include = new EaterIncludeDef(s.getTrimmed());
include.analyze(this, memory);
final String definitionName = include.getLocation();
@ -604,7 +595,7 @@ public class TContext {
} while (true);
} catch (IOException e) {
Logme.error(e);
throw EaterException.located("" + e, s);
throw EaterExceptionLocated.located("" + e, s);
} finally {
try {
reader2.close();
@ -614,12 +605,12 @@ public class TContext {
}
}
private void executeTheme(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated {
private void executeTheme(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterTheme eater = new EaterTheme(s.getTrimmed(), importedFiles);
eater.analyze(this, memory);
final ReadLine reader = eater.getTheme();
if (reader == null)
throw EaterException.located("No such theme " + eater.getName(), s);
throw EaterExceptionLocated.located("No such theme " + eater.getName(), s);
try {
final List<StringLocated> body = new ArrayList<>();
@ -633,7 +624,7 @@ public class TContext {
} while (true);
} catch (IOException e) {
Logme.error(e);
throw EaterException.located("Error reading theme " + e, s);
throw EaterExceptionLocated.located("Error reading theme " + e, s);
} finally {
try {
reader.close();
@ -643,7 +634,7 @@ public class TContext {
}
}
private void executeInclude(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated {
private void executeInclude(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterInclude include = new EaterInclude(s.getTrimmed());
include.analyze(this, memory);
String location = include.getWhat();
@ -661,7 +652,7 @@ public class TContext {
if (location.startsWith("http://") || location.startsWith("https://")) {
final SURL url = SURL.create(location);
if (url == null)
throw EaterException.located("Cannot open URL", s);
throw EaterExceptionLocated.located("Cannot open URL", s);
reader = PreprocessorUtils.getReaderIncludeUrl(url, s, suf, charset);
} else if (location.startsWith("<") && location.endsWith(">")) {
@ -677,14 +668,14 @@ public class TContext {
return;
if (strategy == PreprocessorIncludeStrategy.ONCE && filesUsedCurrent.contains(f2))
throw EaterException.located("This file has already been included", s);
throw EaterExceptionLocated.located("This file has already been included", s);
if (StartDiagramExtractReader.containsStartDiagram(f2, s, charset)) {
reader = StartDiagramExtractReader.build(f2, s, charset);
} else {
final Reader tmp = f2.getReader(charset);
if (tmp == null)
throw EaterException.located("Cannot include file", s);
throw EaterExceptionLocated.located("Cannot include file", s);
reader = ReadLineReader.create(tmp, location, s.getLocation());
}
@ -713,7 +704,7 @@ public class TContext {
}
} catch (IOException e) {
Logme.error(e);
throw EaterException.located("cannot include " + e, s);
throw EaterExceptionLocated.located("cannot include " + e, s);
} finally {
if (reader != null) {
try {
@ -724,7 +715,7 @@ public class TContext {
}
}
throw EaterException.located("cannot include " + location, s);
throw EaterExceptionLocated.located("cannot include " + location, s);
}
public boolean isLegacyDefine(String functionName) {

View File

@ -50,10 +50,10 @@ public interface TFunction {
public TFunctionType getFunctionType();
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> args,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated;
Map<String, TValue> named) throws EaterExceptionLocated;
public void executeProcedureInternal(TContext context, TMemory memory, StringLocated location, List<TValue> args,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated;
Map<String, TValue> named) throws EaterExceptionLocated;
public boolean isUnquoted();

View File

@ -133,7 +133,7 @@ public class TFunctionImpl implements TFunction {
@Override
public void executeProcedureInternal(TContext context, TMemory memory, StringLocated location, List<TValue> args,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
if (functionType != TFunctionType.PROCEDURE && functionType != TFunctionType.LEGACY_DEFINELONG)
throw new IllegalStateException();
@ -143,23 +143,24 @@ public class TFunctionImpl implements TFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> args,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
if (functionType == TFunctionType.LEGACY_DEFINE)
return executeReturnLegacyDefine(location.getLocation(), context, memory, args);
if (functionType != TFunctionType.RETURN_FUNCTION)
throw EaterException.unlocated("Illegal call here. Is there a return directive in your function?", location);
throw EaterExceptionLocated.unlocated("Illegal call here. Is there a return directive in your function?",
location);
final TMemory copy = getNewMemory(memory, args, named);
final TValue result = context.executeLines(copy, body, TFunctionType.RETURN_FUNCTION, true);
if (result == null)
throw EaterException.unlocated("No return directive found in your function", location);
throw EaterExceptionLocated.unlocated("No return directive found in your function", location);
return result;
}
private TValue executeReturnLegacyDefine(LineLocation location, TContext context, TMemory memory, List<TValue> args)
throws EaterException, EaterExceptionLocated {
throws EaterExceptionLocated {
if (legacyDefinition == null)
throw new IllegalStateException();

View File

@ -45,7 +45,7 @@ public interface TMemory {
public TValue getVariable(String varname);
public void putVariable(String varname, TValue value, TVariableScope scope, StringLocated location)
throws EaterException;
throws EaterExceptionLocated;
public void removeVariable(String varname);
@ -59,7 +59,7 @@ public interface TMemory {
public ExecutionContextIf peekIf();
public boolean areAllIfOk(TContext context, TMemory memory) throws EaterException;
public boolean areAllIfOk(TContext context, TMemory memory) throws EaterExceptionLocated;
public void addIf(ExecutionContextIf context);

View File

@ -73,10 +73,10 @@ public class TMemoryGlobal extends ExecutionContexts implements TMemory {
@Override
public void putVariable(String varname, TValue value, TVariableScope scope, StringLocated location)
throws EaterException {
throws EaterExceptionLocated {
Log.info("[MemGlobal] Setting " + varname);
if (scope == TVariableScope.LOCAL)
throw EaterException.unlocated("Cannot use local variable here", location);
throw EaterExceptionLocated.unlocated("Cannot use local variable here", location);
this.globalVariables.put(varname, value);
this.variables.add(varname);

View File

@ -79,7 +79,7 @@ public class TMemoryLocal extends ExecutionContexts implements TMemory {
@Override
public void putVariable(String varname, TValue value, TVariableScope scope, StringLocated location)
throws EaterException {
throws EaterExceptionLocated {
if (scope == TVariableScope.GLOBAL) {
memoryGlobal.putVariable(varname, value, scope, location);
return;

View File

@ -57,7 +57,7 @@ public class TimLoader {
this.context = new TContext(importedFiles, defines, charset, definitionsContainer);
try {
defines.copyTo(global, location);
} catch (EaterException e) {
} catch (EaterExceptionLocated e) {
Logme.error(e);
}
}

View File

@ -40,7 +40,6 @@ import net.sourceforge.plantuml.json.JsonValue;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.expression.TValue;
import net.sourceforge.plantuml.utils.LineLocation;
public class VariableManager {
@ -54,7 +53,7 @@ public class VariableManager {
this.location = location;
}
public int replaceVariables(String str, int i, StringBuilder result) throws EaterException, EaterExceptionLocated {
public int replaceVariables(String str, int i, StringBuilder result) throws EaterExceptionLocated {
final String presentVariable = getVarnameAt(str, i);
if (result.toString().endsWith("##"))
result.setLength(result.length() - 2);
@ -81,8 +80,7 @@ public class VariableManager {
return i;
}
private int replaceJson(JsonValue jsonValue, String str, int i, StringBuilder result)
throws EaterException, EaterExceptionLocated {
private int replaceJson(JsonValue jsonValue, String str, int i, StringBuilder result) throws EaterExceptionLocated {
while (i < str.length()) {
final char n = str.charAt(i);
if (n == '.') {
@ -120,11 +118,11 @@ public class VariableManager {
} else if (jsonValue instanceof JsonObject) {
jsonValue = ((JsonObject) jsonValue).get(nbString);
} else {
throw EaterException.unlocated("Major parsing error", location);
throw EaterExceptionLocated.unlocated("Major parsing error", location);
}
if (jsonValue == null)
throw EaterException.unlocated("Data parsing error", location);
throw EaterExceptionLocated.unlocated("Data parsing error", location);
i++;
} else {

View File

@ -34,14 +34,13 @@
*/
package net.sourceforge.plantuml.tim.expression;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TFunction;
import net.sourceforge.plantuml.tim.TFunctionSignature;
public interface Knowledge {
public TValue getVariable(String name) throws EaterException, EaterExceptionLocated;
public TValue getVariable(String name) throws EaterExceptionLocated;
public TFunction getFunction(TFunctionSignature signature);

View File

@ -41,7 +41,6 @@ import java.util.Deque;
import java.util.List;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunction;
@ -54,7 +53,7 @@ public class ReversePolishInterpretor {
private final boolean trace = false;
public ReversePolishInterpretor(StringLocated location, TokenStack queue, Knowledge knowledge, TMemory memory,
TContext context) throws EaterException, EaterExceptionLocated {
TContext context) throws EaterExceptionLocated {
final Deque<TValue> stack = new ArrayDeque<>();
if (trace)
@ -73,45 +72,45 @@ public class ReversePolishInterpretor {
final TValue v2 = stack.removeFirst();
final TValue v1 = stack.removeFirst();
final TokenOperator op = token.getTokenOperator();
if (op == null)
throw EaterException.unlocated("bad op", location);
if (op == null)
throw EaterExceptionLocated.unlocated("bad op", location);
final TValue tmp = op.operate(v1, v2);
stack.addFirst(tmp);
} else if (token.getTokenType() == TokenType.OPEN_PAREN_FUNC) {
final int nb = Integer.parseInt(token.getSurface());
final Token token2 = it.nextToken();
if (token2.getTokenType() != TokenType.FUNCTION_NAME)
throw EaterException.unlocated("rpn43", location);
if (token2.getTokenType() != TokenType.FUNCTION_NAME)
throw EaterExceptionLocated.unlocated("rpn43", location);
if (trace)
System.err.println("token2=" + token2);
final TFunction function = knowledge.getFunction(new TFunctionSignature(token2.getSurface(), nb));
if (trace)
System.err.println("function=" + function);
if (function == null)
throw EaterException.unlocated("Unknown built-in function " + token2.getSurface(), location);
if (function.canCover(nb, Collections.<String>emptySet()) == false)
throw EaterException.unlocated(
if (function == null)
throw EaterExceptionLocated.unlocated("Unknown built-in function " + token2.getSurface(), location);
if (function.canCover(nb, Collections.<String>emptySet()) == false)
throw EaterExceptionLocated.unlocated(
"Bad number of arguments for " + function.getSignature().getFunctionName(), location);
final List<TValue> args = new ArrayList<>();
for (int i = 0; i < nb; i++)
for (int i = 0; i < nb; i++)
args.add(0, stack.removeFirst());
if (trace)
System.err.println("args=" + args);
if (location == null)
throw EaterException.unlocated("rpn44", location);
if (location == null)
throw EaterExceptionLocated.unlocated("rpn44", location);
final TValue r = function.executeReturnFunction(context, memory, location, args,
Collections.<String, TValue>emptyMap());
if (trace)
System.err.println("r=" + r);
stack.addFirst(r);
} else {
throw EaterException.unlocated("rpn41", location);
throw EaterExceptionLocated.unlocated("rpn41", location);
}
}
result = stack.removeFirst();

View File

@ -38,7 +38,6 @@ import java.util.ArrayDeque;
import java.util.Deque;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
// https://en.wikipedia.org/wiki/Shunting-yard_algorithm
@ -59,8 +58,7 @@ public class ShuntingYard {
System.err.println("");
}
public ShuntingYard(TokenIterator it, Knowledge knowledge, StringLocated location)
throws EaterException, EaterExceptionLocated {
public ShuntingYard(TokenIterator it, Knowledge knowledge, StringLocated location) throws EaterExceptionLocated {
while (it.hasMoreTokens()) {
final Token token = it.nextToken();
@ -76,7 +74,7 @@ public class ShuntingYard {
final TValue variable = knowledge.getVariable(name);
if (variable == null) {
if (isVariableName(name) == false)
throw EaterException.unlocated("Parsing syntax error about " + name, location);
throw EaterExceptionLocated.unlocated("Parsing syntax error about " + name, location);
ouputQueue.add(new Token(name, TokenType.QUOTED_STRING, null));
} else {

View File

@ -44,7 +44,6 @@ import java.util.Map;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.Eater;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TMemory;
@ -87,7 +86,7 @@ public class TokenStack {
return result;
}
static public TokenStack eatUntilCloseParenthesisOrComma(Eater eater) throws EaterException {
static public TokenStack eatUntilCloseParenthesisOrComma(Eater eater) throws EaterExceptionLocated {
final TokenStack result = new TokenStack();
int level = 0;
Token lastToken = null;
@ -95,7 +94,7 @@ public class TokenStack {
eater.skipSpaces();
final char ch = eater.peekChar();
if (ch == 0)
throw EaterException.unlocated("until001", eater.getStringLocated());
throw EaterExceptionLocated.unlocated("until001", eater.getStringLocated());
if (level == 0 && (ch == ',' || ch == ')'))
return result;
@ -113,12 +112,13 @@ public class TokenStack {
}
}
static public void eatUntilCloseParenthesisOrComma(TokenIterator it, StringLocated location) throws EaterException {
static public void eatUntilCloseParenthesisOrComma(TokenIterator it, StringLocated location)
throws EaterExceptionLocated {
int level = 0;
while (true) {
final Token ch = it.peekToken();
if (ch == null)
throw EaterException.unlocated("until002", location);
throw EaterExceptionLocated.unlocated("until002", location);
final TokenType typech = ch.getTokenType();
if (level == 0 && (typech == TokenType.COMMA || typech == TokenType.CLOSE_PAREN_MATH)
@ -135,7 +135,7 @@ public class TokenStack {
}
}
private int countFunctionArg(TokenIterator it, StringLocated location) throws EaterException {
private int countFunctionArg(TokenIterator it, StringLocated location) throws EaterExceptionLocated {
// return 42;
final TokenType type1 = it.peekToken().getTokenType();
if (type1 == TokenType.CLOSE_PAREN_MATH || type1 == TokenType.CLOSE_PAREN_FUNC)
@ -151,13 +151,13 @@ public class TokenStack {
else if (type == TokenType.COMMA)
result++;
else
throw EaterException.unlocated("count13", location);
throw EaterExceptionLocated.unlocated("count13", location);
}
throw EaterException.unlocated("count12", location);
throw EaterExceptionLocated.unlocated("count12", location);
}
public void guessFunctions(StringLocated location) throws EaterException {
public void guessFunctions(StringLocated location) throws EaterExceptionLocated {
final Deque<Integer> open = new ArrayDeque<>();
final Map<Integer, Integer> parens = new HashMap<Integer, Integer>();
for (int i = 0; i < tokens.size(); i++) {
@ -210,8 +210,7 @@ public class TokenStack {
return new InternalIterator();
}
public TValue getResult(StringLocated location, TContext context, TMemory memory)
throws EaterException, EaterExceptionLocated {
public TValue getResult(StringLocated location, TContext context, TMemory memory) throws EaterExceptionLocated {
final Knowledge knowledge = context.asKnowledge(memory, location.getLocation());
final TokenStack tmp = withoutSpace();
tmp.guessFunctions(location);

View File

@ -36,10 +36,10 @@ package net.sourceforge.plantuml.tim.expression;
import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.Eater;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
public enum TokenType {
// ::remove folder when __HAXE__
// ::remove folder when __HAXE__
QUOTED_STRING, JSON_DATA, OPERATOR, OPEN_PAREN_MATH, COMMA, CLOSE_PAREN_MATH, NUMBER, PLAIN_TEXT, SPACES,
FUNCTION_NAME, OPEN_PAREN_FUNC, CLOSE_PAREN_FUNC;
@ -77,7 +77,8 @@ public enum TokenType {
return result;
}
final static public Token eatOneToken(Token lastToken, Eater eater, boolean manageColon) throws EaterException {
final static public Token eatOneToken(Token lastToken, Eater eater, boolean manageColon)
throws EaterExceptionLocated {
char ch = eater.peekChar();
if (ch == 0)
return null;
@ -121,7 +122,7 @@ public enum TokenType {
return true;
}
static private String eatAndGetTokenPlainText(Eater eater) throws EaterException {
static private String eatAndGetTokenPlainText(Eater eater) throws EaterExceptionLocated {
final StringBuilder result = new StringBuilder();
while (true) {
final char ch = eater.peekChar();

View File

@ -35,7 +35,6 @@
package net.sourceforge.plantuml.tim.iterator;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
public abstract class AbstractCodeIterator implements CodeIterator {
@ -47,7 +46,7 @@ public abstract class AbstractCodeIterator implements CodeIterator {
}
@Override
public void next() throws EaterException, EaterExceptionLocated {
public void next() throws EaterExceptionLocated {
source.next();
}
@ -57,7 +56,8 @@ public abstract class AbstractCodeIterator implements CodeIterator {
}
@Override
final public void jumpToCodePosition(CodePosition newPosition, StringLocated location) throws EaterException {
final public void jumpToCodePosition(CodePosition newPosition, StringLocated location)
throws EaterExceptionLocated {
source.jumpToCodePosition(newPosition, location);
}

View File

@ -35,18 +35,17 @@
package net.sourceforge.plantuml.tim.iterator;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
public interface CodeIterator {
// ::remove folder when __HAXE__
public StringLocated peek() throws EaterException, EaterExceptionLocated;
public StringLocated peek() throws EaterExceptionLocated;
public void next() throws EaterException, EaterExceptionLocated;
public void next() throws EaterExceptionLocated;
public CodePosition getCodePosition();
public void jumpToCodePosition(CodePosition newPosition, StringLocated location) throws EaterException;
public void jumpToCodePosition(CodePosition newPosition, StringLocated location) throws EaterExceptionLocated;
}

View File

@ -40,7 +40,6 @@ import net.sourceforge.plantuml.json.ParseException;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.EaterAffectation;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TMemory;
@ -59,7 +58,7 @@ public class CodeIteratorAffectation extends AbstractCodeIterator {
}
@Override
public StringLocated peek() throws EaterException, EaterExceptionLocated {
public StringLocated peek() throws EaterExceptionLocated {
while (true) {
final StringLocated result = source.peek();
if (result == null) {
@ -75,16 +74,16 @@ public class CodeIteratorAffectation extends AbstractCodeIterator {
}
}
private void doAffectation(StringLocated result) throws EaterException, EaterExceptionLocated {
private void doAffectation(StringLocated result) throws EaterExceptionLocated {
int lastLocation = -1;
for (int i = 0; i < 9999; i++)
try {
this.executeAffectation(context, memory, result);
return;
} catch (ParseException e) {
if (e.getColumn() <= lastLocation)
throw EaterException.located("Error in JSON format", result);
if (e.getColumn() <= lastLocation)
throw EaterExceptionLocated.located("Error in JSON format", result);
lastLocation = e.getColumn();
next();
final StringLocated forward = source.peek();
@ -93,7 +92,7 @@ public class CodeIteratorAffectation extends AbstractCodeIterator {
}
private void executeAffectation(TContext context, TMemory memory, StringLocated s)
throws EaterException, EaterExceptionLocated {
throws EaterExceptionLocated {
new EaterAffectation(s).analyze(context, memory);
}

View File

@ -39,7 +39,6 @@ import java.util.List;
import net.sourceforge.plantuml.json.JsonValue;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.EaterForeach;
import net.sourceforge.plantuml.tim.ExecutionContextForeach;
@ -61,7 +60,7 @@ public class CodeIteratorForeach extends AbstractCodeIterator {
this.logs = logs;
}
public StringLocated peek() throws EaterException, EaterExceptionLocated {
public StringLocated peek() throws EaterExceptionLocated {
int level = 0;
while (true) {
final StringLocated result = source.peek();
@ -91,7 +90,7 @@ public class CodeIteratorForeach extends AbstractCodeIterator {
} else if (result.getType() == TLineType.ENDFOREACH) {
logs.add(result);
if (foreach == null)
throw EaterException.located("No foreach related to this endforeach", result);
throw EaterExceptionLocated.located("No foreach related to this endforeach", result);
foreach.inc();
if (foreach.isSkipMe()) {
@ -108,7 +107,7 @@ public class CodeIteratorForeach extends AbstractCodeIterator {
}
}
private void executeForeach(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated {
private void executeForeach(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterForeach condition = new EaterForeach(s);
condition.analyze(context, memory);
final ExecutionContextForeach foreach = ExecutionContextForeach.fromValue(condition.getVarname(),
@ -122,7 +121,7 @@ public class CodeIteratorForeach extends AbstractCodeIterator {
}
private void setLoopVariable(TMemory memory, ExecutionContextForeach foreach, StringLocated position)
throws EaterException {
throws EaterExceptionLocated {
final JsonValue first = foreach.getJsonArray().get(foreach.currentIndex());
memory.putVariable(foreach.getVarname(), TValue.fromJson(first), TVariableScope.GLOBAL, position);
}

View File

@ -39,7 +39,6 @@ import java.util.List;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.EaterElseIf;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.EaterIf;
import net.sourceforge.plantuml.tim.EaterIfdef;
@ -61,7 +60,7 @@ public class CodeIteratorIf extends AbstractCodeIterator {
this.logs = logs;
}
public StringLocated peek() throws EaterException, EaterExceptionLocated {
public StringLocated peek() throws EaterExceptionLocated {
while (true) {
final StringLocated result = source.peek();
if (result == null) {
@ -107,19 +106,17 @@ public class CodeIteratorIf extends AbstractCodeIterator {
}
}
private void executeIf(TContext context, TMemory memory, StringLocated s)
throws EaterException, EaterExceptionLocated {
private void executeIf(TContext context, TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterIf condition = new EaterIf(s);
condition.analyze(context, memory);
final boolean isTrue = condition.isTrue();
memory.addIf(ExecutionContextIf.fromValue(isTrue));
}
private void executeElseIf(TContext context, TMemory memory, StringLocated s)
throws EaterException, EaterExceptionLocated {
private void executeElseIf(TContext context, TMemory memory, StringLocated s) throws EaterExceptionLocated {
final ExecutionContextIf poll = (ExecutionContextIf) memory.peekIf();
if (poll == null)
throw EaterException.located("No if related to this else", s);
throw EaterExceptionLocated.located("No if related to this else", s);
poll.enteringElseIf();
if (poll.hasBeenBurn() == false) {
@ -132,32 +129,32 @@ public class CodeIteratorIf extends AbstractCodeIterator {
}
}
private void executeIfdef(TContext context, TMemory memory, StringLocated s) throws EaterException {
private void executeIfdef(TContext context, TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterIfdef condition = new EaterIfdef(s);
condition.analyze(context, memory);
final boolean isTrue = condition.isTrue(context, memory);
memory.addIf(ExecutionContextIf.fromValue(isTrue));
}
private void executeIfndef(TContext context, TMemory memory, StringLocated s) throws EaterException {
private void executeIfndef(TContext context, TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterIfndef condition = new EaterIfndef(s);
condition.analyze(context, memory);
final boolean isTrue = condition.isTrue(context, memory);
memory.addIf(ExecutionContextIf.fromValue(isTrue));
}
private void executeElse(TContext context, TMemory memory, StringLocated s) throws EaterException {
private void executeElse(TContext context, TMemory memory, StringLocated s) throws EaterExceptionLocated {
final ExecutionContextIf poll = (ExecutionContextIf) memory.peekIf();
if (poll == null)
throw EaterException.located("No if related to this else", s);
throw EaterExceptionLocated.located("No if related to this else", s);
poll.nowInElse();
}
private void executeEndif(TContext context, TMemory memory, StringLocated s) throws EaterException {
private void executeEndif(TContext context, TMemory memory, StringLocated s) throws EaterExceptionLocated {
final ExecutionContextIf poll = (ExecutionContextIf) memory.pollIf();
if (poll == null)
throw EaterException.located("No if related to this endif", s);
throw EaterExceptionLocated.located("No if related to this endif", s);
}

View File

@ -37,7 +37,7 @@ package net.sourceforge.plantuml.tim.iterator;
import java.util.List;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
public class CodeIteratorImpl implements CodeIterator {
@ -89,10 +89,10 @@ public class CodeIteratorImpl implements CodeIterator {
}
@Override
public void jumpToCodePosition(CodePosition newPosition, StringLocated location) throws EaterException {
public void jumpToCodePosition(CodePosition newPosition, StringLocated location) throws EaterExceptionLocated {
this.countJump++;
if (this.countJump > 999)
throw EaterException.unlocated("Infinite loop?", location);
throw EaterExceptionLocated.unlocated("Infinite loop?", location);
final Position pos = (Position) newPosition;
this.current = pos.pos;

View File

@ -35,7 +35,6 @@
package net.sourceforge.plantuml.tim.iterator;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
public class CodeIteratorInnerComment extends AbstractCodeIterator {
@ -44,7 +43,7 @@ public class CodeIteratorInnerComment extends AbstractCodeIterator {
super(source);
}
public StringLocated peek() throws EaterException, EaterExceptionLocated {
public StringLocated peek() throws EaterExceptionLocated {
final StringLocated result = source.peek();
if (result == null) {
return null;

View File

@ -38,7 +38,6 @@ import java.util.List;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.FunctionsSet;
import net.sourceforge.plantuml.tim.TContext;
@ -61,7 +60,7 @@ public class CodeIteratorLegacyDefine extends AbstractCodeIterator {
this.memory = memory;
}
public StringLocated peek() throws EaterException, EaterExceptionLocated {
public StringLocated peek() throws EaterExceptionLocated {
while (true) {
final StringLocated result = source.peek();
if (result == null) {

View File

@ -38,7 +38,6 @@ import java.util.List;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
public class CodeIteratorLongComment extends AbstractCodeIterator {
@ -50,7 +49,7 @@ public class CodeIteratorLongComment extends AbstractCodeIterator {
this.logs = logs;
}
public StringLocated peek() throws EaterException, EaterExceptionLocated {
public StringLocated peek() throws EaterExceptionLocated {
while (true) {
if (source.peek() == null) {
return null;

View File

@ -38,7 +38,6 @@ import java.util.List;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.FunctionsSet;
import net.sourceforge.plantuml.tim.TContext;
@ -62,7 +61,7 @@ public class CodeIteratorProcedure extends AbstractCodeIterator {
this.memory = memory;
}
public StringLocated peek() throws EaterException, EaterExceptionLocated {
public StringLocated peek() throws EaterExceptionLocated {
while (true) {
final StringLocated result = source.peek();
if (result == null) {

View File

@ -38,7 +38,6 @@ import java.util.List;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.FunctionsSet;
import net.sourceforge.plantuml.tim.TContext;
@ -62,7 +61,7 @@ public class CodeIteratorReturnFunction extends AbstractCodeIterator {
this.memory = memory;
}
public StringLocated peek() throws EaterException, EaterExceptionLocated {
public StringLocated peek() throws EaterExceptionLocated {
while (true) {
final StringLocated result = source.peek();
if (result == null) {

View File

@ -38,7 +38,6 @@ import java.util.List;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
public class CodeIteratorShortComment extends AbstractCodeIterator {
@ -50,7 +49,7 @@ public class CodeIteratorShortComment extends AbstractCodeIterator {
this.logs = logs;
}
public StringLocated peek() throws EaterException, EaterExceptionLocated {
public StringLocated peek() throws EaterExceptionLocated {
while (true) {
final StringLocated result = source.peek();
if (result == null) {

View File

@ -40,7 +40,6 @@ import java.util.Map;
import net.sourceforge.plantuml.preproc.Sub;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.EaterStartsub;
import net.sourceforge.plantuml.tim.TContext;
@ -66,7 +65,7 @@ public class CodeIteratorSub extends AbstractCodeIterator {
return Collections.unmodifiableMap(subs);
}
public StringLocated peek() throws EaterException, EaterExceptionLocated {
public StringLocated peek() throws EaterExceptionLocated {
if (readingInProgress != null)
return readingInProgress.peek();
@ -83,7 +82,7 @@ public class CodeIteratorSub extends AbstractCodeIterator {
StringLocated s = null;
while ((s = source.peek()) != null) {
if (s.getType() == TLineType.STARTSUB) {
throw EaterException.located("Cannot nest sub", result);
throw EaterExceptionLocated.located("Cannot nest sub", result);
} else if (s.getType() == TLineType.ENDSUB) {
source.next();
readingInProgress = new CodeIteratorImpl(created.lines());
@ -101,7 +100,7 @@ public class CodeIteratorSub extends AbstractCodeIterator {
}
@Override
public void next() throws EaterException, EaterExceptionLocated {
public void next() throws EaterExceptionLocated {
if (readingInProgress == null) {
source.next();
return;

View File

@ -38,7 +38,6 @@ import java.util.List;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.text.TLineType;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.EaterWhile;
import net.sourceforge.plantuml.tim.ExecutionContextWhile;
@ -60,7 +59,7 @@ public class CodeIteratorWhile extends AbstractCodeIterator {
this.logs = logs;
}
public StringLocated peek() throws EaterException, EaterExceptionLocated {
public StringLocated peek() throws EaterExceptionLocated {
int level = 0;
while (true) {
final StringLocated result = source.peek();
@ -90,7 +89,7 @@ public class CodeIteratorWhile extends AbstractCodeIterator {
} else if (result.getType() == TLineType.ENDWHILE) {
logs.add(result);
if (currentWhile == null)
throw EaterException.located("No while related to this endwhile", result);
throw EaterExceptionLocated.located("No while related to this endwhile", result);
final TValue value = currentWhile.conditionValue(result, context, memory);
if (value.toBoolean())
@ -106,7 +105,7 @@ public class CodeIteratorWhile extends AbstractCodeIterator {
}
}
private void executeWhile(TMemory memory, StringLocated s) throws EaterException, EaterExceptionLocated {
private void executeWhile(TMemory memory, StringLocated s) throws EaterExceptionLocated {
final EaterWhile condition = new EaterWhile(s);
condition.analyze(context, memory);
final TokenStack whileExpression = condition.getWhileExpression();

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class AlwaysFalse extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
return TValue.fromBoolean(false);
}
}

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class AlwaysTrue extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
return TValue.fromBoolean(true);
}
}

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunction;
@ -60,13 +59,13 @@ public class CallUserFunction extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
final String fname = values.get(0).toString();
final List<TValue> args = values.subList(1, values.size());
final TFunctionSignature signature = new TFunctionSignature(fname, args.size());
final TFunction func = context.getFunctionSmart(signature);
if (func == null)
throw EaterException.unlocated("Cannot find void function " + fname, location);
throw EaterExceptionLocated.unlocated("Cannot find void function " + fname, location);
return func.executeReturnFunction(context, memory, location, args, named);
}

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class Chr extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
try {
final String value = String.valueOf(Character.toChars(values.get(0).toInt()));
return TValue.fromString(value);

View File

@ -42,7 +42,6 @@ import net.sourceforge.plantuml.klimt.color.HColor;
import net.sourceforge.plantuml.klimt.color.HColorSet;
import net.sourceforge.plantuml.klimt.color.NoSuchColorException;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -63,7 +62,7 @@ public class Darken extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
final String colorString = values.get(0).toString();
final int ratio = values.get(1).toInt();
try {
@ -71,7 +70,7 @@ public class Darken extends SimpleReturnFunction {
color = color.darken(ratio);
return TValue.fromString(color.asString());
} catch (NoSuchColorException e) {
throw EaterException.located("No such color", location);
throw EaterExceptionLocated.located("No such color", location);
}
}
}

View File

@ -41,7 +41,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -61,7 +60,7 @@ public class DateFunction extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
if (values.size() == 0)
return TValue.fromString(new Date().toString());
@ -71,11 +70,11 @@ public class DateFunction extends SimpleReturnFunction {
now = 1000L * values.get(1).toInt();
else
now = System.currentTimeMillis();
try {
return TValue.fromString(new SimpleDateFormat(format).format(now));
} catch (Exception e) {
throw EaterException.unlocated("Bad date pattern", location);
throw EaterExceptionLocated.unlocated("Bad date pattern", location);
}
}
}

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class Dec2hex extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
try {
return TValue.fromString("" + Integer.toHexString(values.get(0).toInt()));
} catch (Throwable t) {

View File

@ -40,7 +40,6 @@ import java.util.Set;
import net.sourceforge.plantuml.preproc.Defines;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -66,7 +65,7 @@ public class Dirpath extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
if (value == null)
return TValue.fromString("");

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.StringEater;
import net.sourceforge.plantuml.tim.TContext;
@ -60,7 +59,7 @@ public class Eval extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
final String exp = values.get(0).toString();
final StringEater eater = new StringEater(exp);
final TValue value = eater.eatExpression(context, memory);

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class Feature extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
final String arg = values.get(0).toString();
if ("style".equalsIgnoreCase(arg))
return TValue.fromInt(1);

View File

@ -40,7 +40,6 @@ import java.util.Set;
import net.sourceforge.plantuml.security.SFile;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -60,7 +59,7 @@ public class FileExists extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
// ::comment when __CORE__
final String path = values.get(0).toString();
return TValue.fromBoolean(new SFile(path).exists());

View File

@ -40,7 +40,6 @@ import java.util.Set;
import net.sourceforge.plantuml.preproc.Defines;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -66,7 +65,7 @@ public class Filename extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
if (value == null) {
return TValue.fromString("");
}

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -60,7 +59,7 @@ public class FunctionExists extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
final String name = values.get(0).toString();
return TValue.fromBoolean(context.doesFunctionExist(name));
}

View File

@ -45,7 +45,6 @@ import net.sourceforge.plantuml.json.JsonObject;
import net.sourceforge.plantuml.log.Logme;
import net.sourceforge.plantuml.preproc.Stdlib;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -65,7 +64,7 @@ public class GetAllStdlib extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
switch (values.size()) {
case 0:
@ -100,7 +99,7 @@ public class GetAllStdlib extends SimpleReturnFunction {
default:
assert false; // Should not append because of canCover()
throw EaterException.located("Error on get_all_stdlib: Too many arguments", location);
throw EaterExceptionLocated.located("Error on get_all_stdlib: Too many arguments", location);
}
}
}

View File

@ -43,7 +43,6 @@ import net.sourceforge.plantuml.json.JsonArray;
import net.sourceforge.plantuml.log.Logme;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.theme.ThemeUtils;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -63,7 +62,7 @@ public class GetAllTheme extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
final JsonArray result = new JsonArray();
try {
for (String theme : ThemeUtils.getAllThemeNames()) {

View File

@ -42,7 +42,6 @@ import net.sourceforge.plantuml.json.JsonArray;
import net.sourceforge.plantuml.json.JsonObject;
import net.sourceforge.plantuml.json.JsonValue;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -62,11 +61,11 @@ public class GetJsonKey extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
final TValue data = values.get(0);
if (data.isJson() == false)
throw EaterException.unlocated("Not JSON data", location);
throw EaterExceptionLocated.unlocated("Not JSON data", location);
final JsonValue json = data.toJson();
if (json.isObject()) {
final JsonObject object = (JsonObject) json;
@ -88,7 +87,7 @@ public class GetJsonKey extends SimpleReturnFunction {
return TValue.fromJson(result);
}
throw EaterException.unlocated("Bad JSON type", location);
throw EaterExceptionLocated.unlocated("Bad JSON type", location);
}

View File

@ -40,7 +40,6 @@ import java.util.Set;
import net.sourceforge.plantuml.json.JsonValue;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -60,7 +59,7 @@ public class GetJsonType extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
final TValue data = values.get(0);
if (data.isString())
return TValue.fromString("string");

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class GetVariableValue extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
final String name = values.get(0).toString();
final TValue variable = memory.getVariable(name);
if (variable == null)

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -60,7 +59,7 @@ public class GetVersion extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
return TValue.fromString(Version.versionString());
}
}

View File

@ -40,7 +40,6 @@ import java.util.Set;
import net.sourceforge.plantuml.security.SecurityUtils;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -60,7 +59,7 @@ public class Getenv extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
// ::comment when __CORE__
final String value = getenv(values.get(0).toString());
if (value == null)

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class Hex2dec extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
try {
return TValue.fromInt(Integer.parseInt(values.get(0).toString(), 16));
} catch (Throwable t) {

View File

@ -42,7 +42,6 @@ import java.util.Set;
import net.sourceforge.plantuml.klimt.color.HColors;
import net.sourceforge.plantuml.klimt.color.HSLColor;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -62,7 +61,7 @@ public class HslColor extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
final int h = values.get(0).toInt();
final int s = values.get(1).toInt();
final int l = values.get(2).toInt();

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -60,7 +59,7 @@ public class IntVal extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
final String s = values.get(0).toString();
try {
return TValue.fromInt(Integer.parseInt(s));

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunction;
@ -65,13 +64,13 @@ public class InvokeProcedure implements TFunction {
@Override
public void executeProcedureInternal(TContext context, TMemory memory, StringLocated location, List<TValue> args,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
final String fname = args.get(0).toString();
final List<TValue> sublist = args.subList(1, args.size());
final TFunctionSignature signature = new TFunctionSignature(fname, sublist.size());
final TFunction func = context.getFunctionSmart(signature);
if (func == null)
throw EaterException.located("Cannot find void function " + fname, location);
throw EaterExceptionLocated.located("Cannot find void function " + fname, location);
func.executeProcedureInternal(context, memory, location, sublist, named);
}

View File

@ -42,7 +42,6 @@ import net.sourceforge.plantuml.klimt.color.HColor;
import net.sourceforge.plantuml.klimt.color.HColorSet;
import net.sourceforge.plantuml.klimt.color.NoSuchColorException;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -63,13 +62,13 @@ public class IsDark extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
final String colorString = values.get(0).toString();
try {
final HColor color = HColorSet.instance().getColorLEGACY(colorString);
return TValue.fromBoolean(color.isDark());
} catch (NoSuchColorException e) {
throw EaterException.located("No such color", location);
throw EaterExceptionLocated.located("No such color", location);
}
}
}

View File

@ -42,7 +42,6 @@ import net.sourceforge.plantuml.klimt.color.HColor;
import net.sourceforge.plantuml.klimt.color.HColorSet;
import net.sourceforge.plantuml.klimt.color.NoSuchColorException;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -63,13 +62,13 @@ public class IsLight extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
final String colorString = values.get(0).toString();
try {
final HColor color = HColorSet.instance().getColorLEGACY(colorString);
return TValue.fromBoolean(!color.isDark());
} catch (NoSuchColorException e) {
throw EaterException.located("No such color", location);
throw EaterExceptionLocated.located("No such color", location);
}
}
}

View File

@ -41,7 +41,6 @@ import java.util.Set;
import net.sourceforge.plantuml.json.JsonObject;
import net.sourceforge.plantuml.json.JsonValue;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -61,7 +60,7 @@ public class JsonKeyExists extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
final TValue arg0 = values.get(0);
if (arg0.isJson() == false)
return TValue.fromBoolean(false);

View File

@ -42,7 +42,6 @@ import net.sourceforge.plantuml.klimt.color.HColor;
import net.sourceforge.plantuml.klimt.color.HColorSet;
import net.sourceforge.plantuml.klimt.color.NoSuchColorException;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -63,7 +62,7 @@ public class Lighten extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
final String colorString = values.get(0).toString();
final int ratio = values.get(1).toInt();
try {
@ -71,7 +70,7 @@ public class Lighten extends SimpleReturnFunction {
color = color.lighten(ratio);
return TValue.fromString(color.asString());
} catch (NoSuchColorException e) {
throw EaterException.located("No such color", location);
throw EaterExceptionLocated.located("No such color", location);
}
}
}

View File

@ -50,7 +50,6 @@ import net.sourceforge.plantuml.log.Logme;
import net.sourceforge.plantuml.security.SFile;
import net.sourceforge.plantuml.security.SURL;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -109,7 +108,7 @@ public class LoadJson extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
final String path = values.get(0).toString();
try {
String data = loadStringData(path, getCharset(values));
@ -120,11 +119,12 @@ public class LoadJson extends SimpleReturnFunction {
return TValue.fromJson(jsonValue);
} catch (ParseException pe) {
Logme.error(pe);
throw EaterException.unlocated("JSON parse issue in source " + path + " on location " + pe.getLocation(),
location);
throw EaterExceptionLocated
.unlocated("JSON parse issue in source " + path + " on location " + pe.getLocation(), location);
} catch (UnsupportedEncodingException e) {
Logme.error(e);
throw EaterException.unlocated("JSON encoding issue in source " + path + ": " + e.getMessage(), location);
throw EaterExceptionLocated.unlocated("JSON encoding issue in source " + path + ": " + e.getMessage(),
location);
}
}
@ -163,7 +163,8 @@ public class LoadJson extends SimpleReturnFunction {
* @return the decoded String from the data source
* @throws EaterException if something went wrong on reading data
*/
private String loadStringData(String path, String charset) throws EaterException, UnsupportedEncodingException {
private String loadStringData(String path, String charset)
throws EaterExceptionLocated, UnsupportedEncodingException {
byte[] byteData = null;
if (path.startsWith("http://") || path.startsWith("https://")) {

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class LogicalAnd extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
for (TValue v : values)
if (v.toBoolean() == false)
return TValue.fromBoolean(false);

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class LogicalNand extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
for (TValue v : values)
if (v.toBoolean() == false)
return TValue.fromBoolean(!false);

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class LogicalNor extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
for (TValue v : values)
if (v.toBoolean() == true)
return TValue.fromBoolean(!true);

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class LogicalNot extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
final boolean arg = values.get(0).toBoolean();
return TValue.fromBoolean(!arg);
}

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class LogicalNxor extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
int cpt = 0;
for (TValue v : values)
if (v.toBoolean() == true)

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class LogicalOr extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
for (TValue v : values)
if (v.toBoolean() == true)
return TValue.fromBoolean(true);

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class LogicalXor extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
int cpt = 0;
for (TValue v : values)
if (v.toBoolean() == true)

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class Now extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
final long now = System.currentTimeMillis() / 1000L;
return TValue.fromInt((int) now);
}

View File

@ -39,7 +39,6 @@ import java.util.Map;
import java.util.Set;
import net.sourceforge.plantuml.text.StringLocated;
import net.sourceforge.plantuml.tim.EaterException;
import net.sourceforge.plantuml.tim.EaterExceptionLocated;
import net.sourceforge.plantuml.tim.TContext;
import net.sourceforge.plantuml.tim.TFunctionSignature;
@ -59,7 +58,7 @@ public class Ord extends SimpleReturnFunction {
@Override
public TValue executeReturnFunction(TContext context, TMemory memory, StringLocated location, List<TValue> values,
Map<String, TValue> named) throws EaterException, EaterExceptionLocated {
Map<String, TValue> named) throws EaterExceptionLocated {
try {
final int codePoint = values.get(0).toString().codePointAt(0);
return TValue.fromInt(codePoint);

Some files were not shown because too many files have changed in this diff Show More