private void recordSurrogateError(StringBuilder inputData, int index, char codePoint) throws SnuggleParseException { sessionContext.registerError(new InputError(CoreErrorCode.TTEG05, null, Integer.toHexString(codePoint), Integer.valueOf(index))); inputData.setCharAt(index, ' '); } }
@Override public String toString() { if (stringRepresentation==null) { stringRepresentation = buildStringRepresentation(); } return stringRepresentation; }
/** Constructs an error message for the given {@link InputError}. */ public static String getErrorMessage(InputError error) { return getErrorMessage(error.getErrorCode(), error.getArguments()); }
public static void appendErrorAsString(StringBuffer messageBuilder, InputError error) { new MessageFormat(GENERAL_MESSAGE_BUNDLE.getString("error_as_string")).format(new Object[] { formatErrorCodeName(error.getErrorCode()), /* Error code/package */ getErrorMessage(error) /* Error Message */ }, messageBuilder, null); FrozenSlice errorSlice = error.getSlice(); if (errorSlice!=null) { appendSliceContext(messageBuilder, errorSlice); } }
Element merror = appendMathMLElement(parentElement, "merror"); appendMathMLTextElement(merror, "mtext", errorToken.getError().getErrorCode().toString(), false);
public ErrorToken(final InputError error, final LaTeXMode latexMode) { super(error.getSlice(), TokenType.ERROR, latexMode, TextFlowContext.START_NEW_XHTML_BLOCK); this.error = error; }
/** * Convert a tex math formula into a Symja expression. The SnuggleTeX engine first converts the TeX expression in a * MathML expression. This MathML expression is then converted to Symja. * * @param texStr * the tex math formula * @return */ public IExpr toExpression(String texStr) { SnuggleEngine engine = new SnuggleEngine(); SnuggleSession session = engine.createSession(); session.getConfiguration().setFailingFast(true); SnuggleInput input = new SnuggleInput("$$ " + texStr + " $$"); try { if (session.parseInput(input)) { NodeList nodes = session.buildDOMSubtree(); int[] position = new int[] { 0 }; return convert(nodes, position, null, 0); } List<InputError> errors = session.getErrors(); for (int i = 0; i < errors.size(); i++) { fEngine.printMessage(errors.get(i).toString()); } } catch (Exception e) { if (Config.SHOW_STACKTRACE) { e.printStackTrace(); } } return F.$Aborted; }
public static void appendErrorAsString(StringBuffer messageBuilder, InputError error) { new MessageFormat(GENERAL_MESSAGE_BUNDLE.getString("error_as_string")).format(new Object[] { formatErrorCodeName(error.getErrorCode()), /* Error code/package */ getErrorMessage(error) /* Error Message */ }, messageBuilder, null); FrozenSlice errorSlice = error.getSlice(); if (errorSlice!=null) { appendSliceContext(messageBuilder, errorSlice); } }
Element merror = appendMathMLElement(parentElement, "merror"); appendMathMLTextElement(merror, "mtext", errorToken.getError().getErrorCode().toString(), false);
public ErrorToken(final InputError error, final LaTeXMode latexMode) { super(error.getSlice(), TokenType.ERROR, latexMode, TextFlowContext.START_NEW_XHTML_BLOCK); this.error = error; }
public static Element formatErrorAsXHTML(Document ownerDocument, InputError error) { Element result = ownerDocument.createElementNS(W3CConstants.XHTML_NAMESPACE, "div"); result.setAttribute("class", "error"); Element heading = ownerDocument.createElementNS(W3CConstants.XHTML_NAMESPACE, "h2"); heading.appendChild(ownerDocument.createTextNode("SnuggleTeX Error (" + formatErrorCodeName(error.getErrorCode()) + ")")); Element pre = ownerDocument.createElementNS(W3CConstants.XHTML_NAMESPACE, "pre"); /* Nicely format XML error content */ StringBuffer messageBuilder = new StringBuffer(getErrorMessage(error)); FrozenSlice errorSlice = error.getSlice(); if (errorSlice!=null) { appendSliceContext(messageBuilder, errorSlice); } /* Add message as child node */ pre.appendChild(ownerDocument.createTextNode(messageBuilder.toString())); /* That's it! */ result.appendChild(heading); result.appendChild(pre); return result; }
/** Constructs an error message for the given {@link InputError}. */ public static String getErrorMessage(InputError error) { return getErrorMessage(error.getErrorCode(), error.getArguments()); }
private int[] calculateNewlineIndicesAndCheckASCII(StringBuilder inputData) throws SnuggleParseException { List<Integer> newlineIndicesBuilder = new ArrayList<Integer>(); newlineIndicesBuilder.add(Integer.valueOf(-1)); int c; for (int i=0, length=inputData.length(); i<length; i++) { c = inputData.charAt(i); if (c=='\n') { newlineIndicesBuilder.add(Integer.valueOf(i)); } if ((c<32 && !Character.isWhitespace(c) || c > 126)) { InputError error = new InputError(CoreErrorCode.TTEG02, null, Character.toString((char) c), Integer.toHexString(c), Integer.valueOf(i)); sessionContext.registerError(error); inputData.setCharAt(i, 'x'); } } int[] calculatedNewlineIndices = new int[newlineIndicesBuilder.size()]; for (int i = 0; i < calculatedNewlineIndices.length; i++) { calculatedNewlineIndices[i] = newlineIndicesBuilder.get(i); } return calculatedNewlineIndices; } }
Element merror = appendMathMLElement(parentElement, "merror"); appendMathMLTextElement(merror, "mtext", errorToken.getError().getErrorCode().toString(), false);
@Override public String toString() { if (stringRepresentation==null) { stringRepresentation = buildStringRepresentation(); } return stringRepresentation; }
public ErrorToken(final InputError error, final LaTeXMode latexMode) { super(error.getSlice(), TokenType.ERROR, latexMode, TextFlowContext.START_NEW_XHTML_BLOCK); this.error = error; }
public static Element formatErrorAsXHTML(Document ownerDocument, InputError error) { Element result = ownerDocument.createElementNS(W3CConstants.XHTML_NAMESPACE, "div"); result.setAttribute("class", "error"); Element heading = ownerDocument.createElementNS(W3CConstants.XHTML_NAMESPACE, "h2"); heading.appendChild(ownerDocument.createTextNode("SnuggleTeX Error (" + formatErrorCodeName(error.getErrorCode()) + ")")); Element pre = ownerDocument.createElementNS(W3CConstants.XHTML_NAMESPACE, "pre"); /* Nicely format XML error content */ StringBuffer messageBuilder = new StringBuffer(getErrorMessage(error)); FrozenSlice errorSlice = error.getSlice(); if (errorSlice!=null) { appendSliceContext(messageBuilder, errorSlice); } /* Add message as child node */ pre.appendChild(ownerDocument.createTextNode(messageBuilder.toString())); /* That's it! */ result.appendChild(heading); result.appendChild(pre); return result; }
/** Constructs an error message for the given {@link InputError}. */ public static String getErrorMessage(InputError error) { return getErrorMessage(error.getErrorCode(), error.getArguments()); }
private int[] calculateNewlineIndicesAndCheckASCII(StringBuilder inputData) throws SnuggleParseException { List<Integer> newlineIndicesBuilder = new ArrayList<Integer>(); newlineIndicesBuilder.add(Integer.valueOf(-1)); int c; for (int i=0, length=inputData.length(); i<length; i++) { c = inputData.charAt(i); if (c=='\n') { newlineIndicesBuilder.add(Integer.valueOf(i)); } if ((c<32 && !Character.isWhitespace(c) || c > 126)) { InputError error = new InputError(CoreErrorCode.TTEG02, null, Character.toString((char) c), Integer.toHexString(c), Integer.valueOf(i)); sessionContext.registerError(error); inputData.setCharAt(i, 'x'); } } int[] calculatedNewlineIndices = new int[newlineIndicesBuilder.size()]; for (int i = 0; i < calculatedNewlineIndices.length; i++) { calculatedNewlineIndices[i] = newlineIndicesBuilder.get(i); } return calculatedNewlineIndices; } }
if (((ErrorToken) resultToken).getError().getErrorCode()==CoreErrorCode.TTEG00) { endDelimiterNotFound = true;