mirror of
https://github.com/yuliskov/LeanKeyboard.git
synced 2026-04-23 08:32:53 -04:00
improve rus translation
This commit is contained in:
144
leankeykeyboard/src/main/java/com/liskovsoft/utils/Helpers.java
Normal file
144
leankeykeyboard/src/main/java/com/liskovsoft/utils/Helpers.java
Normal file
@@ -0,0 +1,144 @@
|
||||
package com.liskovsoft.utils;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.Charset;
|
||||
import java.text.DateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Scanner;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class Helpers {
|
||||
/**
|
||||
* Simple wildcard matching routine. Implemented without regex. So you may expect huge performance boost.
|
||||
* @param host
|
||||
* @param mask
|
||||
* @return
|
||||
*/
|
||||
public static boolean matchSubstr(String host, String mask) {
|
||||
String[] sections = mask.split("\\*");
|
||||
String text = host;
|
||||
for (String section : sections) {
|
||||
int index = text.indexOf(section);
|
||||
if (index == -1) {
|
||||
return false;
|
||||
}
|
||||
text = text.substring(index + section.length());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static boolean matchSubstrNoCase(String host, String mask) {
|
||||
return matchSubstr(host.toLowerCase(), mask.toLowerCase());
|
||||
}
|
||||
|
||||
public static InputStream getAsset(Context ctx, String fileName) {
|
||||
InputStream is = null;
|
||||
try {
|
||||
is = ctx.getAssets().open(fileName);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return is;
|
||||
}
|
||||
|
||||
public static String encodeURI(byte[] data) {
|
||||
try {
|
||||
// make behaviour of java uri-encode the same as javascript's one
|
||||
return URLEncoder.encode(new String(data, "UTF-8"), "UTF-8").replace("+", "%20");
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean floatEquals(float num1, float num2) {
|
||||
float epsilon = 0.1f;
|
||||
return Math.abs(num1 - num2) < epsilon;
|
||||
}
|
||||
|
||||
public static String getDeviceName() {
|
||||
return String.format("%s (%s)", Build.MODEL, Build.PRODUCT);
|
||||
}
|
||||
|
||||
public static boolean deviceMatch(String[] devicesToProcess) {
|
||||
String thisDeviceName = Helpers.getDeviceName();
|
||||
for (String deviceName : devicesToProcess) {
|
||||
boolean match = matchSubstrNoCase(thisDeviceName, deviceName);
|
||||
if (match) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static String toString(InputStream inputStream) {
|
||||
if (inputStream == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Scanner s = new Scanner(inputStream).useDelimiter("\\A");
|
||||
String result = s.hasNext() ? s.next() : "";
|
||||
return result;
|
||||
}
|
||||
|
||||
public static InputStream toStream(String content) {
|
||||
return new ByteArrayInputStream(content.getBytes(Charset.forName("UTF8")));
|
||||
}
|
||||
|
||||
public static void postOnUiThread(Runnable runnable) {
|
||||
new Handler(Looper.getMainLooper()).post(runnable);
|
||||
}
|
||||
|
||||
public static String unixToLocalDate(Context ctx, String timestamp) {
|
||||
Locale current = ctx.getResources().getConfiguration().locale;
|
||||
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG, current);
|
||||
Date date;
|
||||
if (timestamp == null) {
|
||||
date = new Date();
|
||||
} else {
|
||||
date = new Date((long) Integer.parseInt(timestamp) * 1000);
|
||||
}
|
||||
return dateFormat.format(date);
|
||||
}
|
||||
|
||||
public static String runMultiMatcher(String input, String... patterns) {
|
||||
if (input == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Pattern regex;
|
||||
Matcher matcher;
|
||||
String result = null;
|
||||
for (String pattern : patterns) {
|
||||
regex = Pattern.compile(pattern);
|
||||
matcher = regex.matcher(input);
|
||||
|
||||
if (matcher.find()) {
|
||||
result = matcher.group(matcher.groupCount()); // get last group
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static boolean isCallable(Context ctx, Intent intent) {
|
||||
List<ResolveInfo> list = ctx.getPackageManager().queryIntentActivities(intent,
|
||||
PackageManager.MATCH_DEFAULT_ONLY);
|
||||
return list.size() > 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user