This is an automated email from the ASF dual-hosted git repository. henrib pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-jexl.git
The following commit(s) were added to refs/heads/master by this push: new 8afe559 [JEXL]: - preparing to add 'escaped' identifiers 8afe559 is described below commit 8afe5595058c727b64b10decaa49bb5a72acc977 Author: henrib <> AuthorDate: Wed May 16 10:40:19 2018 +0200 [JEXL]: - preparing to add 'escaped' identifiers --- .../apache/commons/jexl3/parser/StringParser.java | 67 ++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/src/main/java/org/apache/commons/jexl3/parser/StringParser.java b/src/main/java/org/apache/commons/jexl3/parser/StringParser.java index 8cb4b9d..375c1dd 100644 --- a/src/main/java/org/apache/commons/jexl3/parser/StringParser.java +++ b/src/main/java/org/apache/commons/jexl3/parser/StringParser.java @@ -205,5 +205,72 @@ public class StringParser { strb.append(delim); return strb.toString(); } + + /** + * Remove escape char ('\') from an identifier. + * @param str the identifier escaped string, ie with a backslash before space, quote, double-quote and backslash + * @return the string with no '\\' character + */ + public static String unescapeIdentifier(String str) { + StringBuilder strb = null; + boolean esc = false; + if (str != null) { + int n = 0; + int last = str.length(); + while (n < last) { + char c = str.charAt(n); + if (esc) { + if (strb == null) { + strb = new StringBuilder(last); + strb.append(str.substring(0, n)); + } else { + strb.append(c); + } + esc = false; + } else if (c == '\\') { + esc = true; + } else if (strb != null) { + strb.append(c); + } + n += 1; + } + } + return strb == null ? str : strb.toString(); + } + /** + * Adds a escape char ('\') where needed in a string form of an ide + * @param str the identifier un-escaped string + * @return the string with added backslash character before space, quote, double-quote and backslash + */ + public static String escapeIdentifier(String str) { + StringBuilder strb = null; + if (str != null) { + int n = 0; + int last = str.length(); + while (n < last) { + char c = str.charAt(n); + switch (c) { + case ' ': + case '\'': + case '"': + case '\\': { + if (strb == null) { + strb = new StringBuilder(last); + strb.append(str.substring(0, n)); + } + strb.append('\\'); + strb.append(c); + break; + } + default: + if (strb != null) { + strb.append(c); + } + } + n += 1; + } + } + return strb == null ? str : strb.toString(); + } } \ No newline at end of file -- To stop receiving notification emails like this one, please contact hen...@apache.org.