2018-09-17 10:20:34 +03:00
|
|
|
package ru.gravit.utils.helper;
|
2018-09-17 10:07:32 +03:00
|
|
|
|
|
|
|
import java.util.Locale;
|
|
|
|
import java.util.regex.Matcher;
|
|
|
|
import java.util.regex.Pattern;
|
|
|
|
|
|
|
|
import javax.script.ScriptEngine;
|
|
|
|
import javax.script.ScriptEngineFactory;
|
|
|
|
import javax.script.ScriptEngineManager;
|
|
|
|
|
|
|
|
import ru.gravit.launcher.LauncherAPI;
|
|
|
|
|
|
|
|
public final class CommonHelper {
|
|
|
|
@LauncherAPI
|
|
|
|
public static final ScriptEngineManager scriptManager = new ScriptEngineManager();
|
|
|
|
@LauncherAPI
|
|
|
|
public static final ScriptEngineFactory nashornFactory = getEngineFactories(scriptManager);
|
|
|
|
|
|
|
|
private static ScriptEngineFactory getEngineFactories(ScriptEngineManager manager) {
|
|
|
|
// Метод похож на костыль но таковым не является, ибо единоразовое получение фактории быстрее, чем её переполучение на ходу.
|
|
|
|
for (ScriptEngineFactory fact : manager.getEngineFactories())
|
|
|
|
if (fact.getNames().contains("nashorn") || fact.getNames().contains("Nashorn")) return fact;
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
@LauncherAPI
|
|
|
|
public static String low(String s) {
|
|
|
|
return s.toLowerCase(Locale.US);
|
|
|
|
}
|
|
|
|
|
|
|
|
@LauncherAPI
|
|
|
|
public static boolean multiMatches(Pattern[] pattern, String from) {
|
|
|
|
for (Pattern p : pattern)
|
|
|
|
if (p.matcher(from).matches()) return true;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
@LauncherAPI
|
|
|
|
public static String multiReplace(Pattern[] pattern, String from, String replace) {
|
|
|
|
Matcher m;
|
|
|
|
String tmp = null;
|
|
|
|
for (Pattern p : pattern) {
|
|
|
|
m = p.matcher(from);
|
|
|
|
if (m.matches()) tmp = m.replaceAll(replace);
|
|
|
|
}
|
|
|
|
return tmp != null ? tmp : from;
|
|
|
|
}
|
|
|
|
|
|
|
|
@LauncherAPI
|
|
|
|
public static ScriptEngine newScriptEngine() {
|
|
|
|
return nashornFactory.getScriptEngine();
|
|
|
|
}
|
|
|
|
|
|
|
|
@LauncherAPI
|
|
|
|
public static Thread newThread(String name, boolean daemon, Runnable runnable) {
|
|
|
|
Thread thread = new Thread(runnable);
|
|
|
|
thread.setDaemon(daemon);
|
|
|
|
if (name != null)
|
|
|
|
thread.setName(name);
|
|
|
|
return thread;
|
|
|
|
}
|
|
|
|
|
|
|
|
@LauncherAPI
|
|
|
|
public static String replace(String source, String... params) {
|
|
|
|
for (int i = 0; i < params.length; i += 2)
|
|
|
|
source = source.replace('%' + params[i] + '%', params[i + 1]);
|
|
|
|
return source;
|
|
|
|
}
|
|
|
|
|
|
|
|
private CommonHelper() {
|
|
|
|
}
|
|
|
|
}
|