package qa.qcri.aidr.predict.common;
import java.util.Collection;
import java.util.Iterator;
import org.apache.commons.lang3.text.translate.AggregateTranslator;
import org.apache.commons.lang3.text.translate.CharSequenceTranslator;
import org.apache.commons.lang3.text.translate.EntityArrays;
import org.apache.commons.lang3.text.translate.LookupTranslator;
import org.apache.commons.lang3.text.translate.OctalUnescaper;
import org.apache.commons.lang3.text.translate.UnicodeEscaper;
import org.apache.commons.lang3.text.translate.UnicodeUnescaper;
import org.json.JSONArray;
import org.json.JSONException;
/**
* A collection of helper methods.
*
* @author jrogstadius
*/
public class Helpers {
public static String join(Collection<?> s, String delimiter) {
StringBuilder builder = new StringBuilder();
Iterator<?> iter = s.iterator();
while (iter.hasNext()) {
builder.append(iter.next().toString());
if (!iter.hasNext()) {
break;
}
builder.append(delimiter);
}
return builder.toString();
}
public static String[] toStringArray(JSONArray jsonArr) {
String[] arr = new String[jsonArr.length()];
for (int i = 0; i < jsonArr.length(); i++) {
try {
arr[i] = jsonArr.getString(i);
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
return arr;
}
static final CharSequenceTranslator ESCAPE_JSON = new AggregateTranslator(
new LookupTranslator(EntityArrays.JAVA_CTRL_CHARS_ESCAPE()),
UnicodeEscaper.outsideOf(32, 0x7f), new LookupTranslator(
new String[][] { { "<", "\\u003c" }, { ">", "\\u003e" },
// {"\\", "\\\\"},
{ "\n", "\\n" }, { "\r", "" } }));
public static String escapeJson(String text) {
return ESCAPE_JSON.translate(text);
}
static final CharSequenceTranslator UNESCAPE_JSON = new AggregateTranslator(
new OctalUnescaper(), // .between('\1', '\377'),
new UnicodeUnescaper(), new LookupTranslator(
EntityArrays.JAVA_CTRL_CHARS_UNESCAPE()),
new LookupTranslator(new String[][] { { "\\\u003c", "<" },
{ "\\u003e", ">" },
// {"\\\\", "\\"},
// {"\n", "\\n"},
// {"\r", "\\r"}
}));
public static String unescapeJson(String text) {
return UNESCAPE_JSON.translate(text);
}
}