using OpenTap.Addin;
|
using OpenTap.Addin.Entity;
|
using System;
|
using System.Text.RegularExpressions;
|
|
namespace AddInPlugin.Util
|
{
|
public class MethodUtil
|
{
|
public static readonly MethodUtil Instance = new MethodUtil();
|
|
private MethodUtil()
|
{
|
}
|
|
public bool IsNullOrEmpty(object obj)
|
{
|
return string.IsNullOrEmpty(obj?.ToString());
|
}
|
|
public string Str(object obj)
|
{
|
return obj?.ToString();
|
}
|
|
public NumberData Abs(object obj)
|
{
|
if (NumberData.Support(obj))
|
{
|
var nd = new NumberData(obj.ToString());
|
return new NumberData(Math.Abs(nd.value));
|
}
|
throw new ArgumentException($"Unsupported Type {obj.GetType()}");
|
}
|
|
public NumberData Sqrt(object obj)
|
{
|
if (NumberData.Support(obj))
|
{
|
var nd = new NumberData(obj.ToString());
|
return new NumberData(Math.Sqrt(nd.value));
|
}
|
throw new ArgumentException($"Unsupported Type {obj.GetType()}");
|
}
|
|
public string[] Split(object data, object spliter)
|
{
|
return Regex.Split(data.ToString(), spliter.ToString());
|
}
|
|
public double Seconds(bool useless = true)
|
{
|
return DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() / 1000d;
|
}
|
|
public string DateStr(string pattern = "yyyy-MM-dd HH:mm:ss")
|
{
|
return DateTime.Now.ToString(pattern);
|
}
|
|
public dynamic Ref(dynamic obj)
|
{
|
return obj;
|
}
|
|
public delegate NumberData Val(object target, RuntimeVariable result = null);
|
public static Val GetValImpl()
|
{
|
return (object target, RuntimeVariable result) =>
|
{
|
try
|
{
|
if (!(result is null)) result.__data___ = true;
|
return new NumberData(target.ToString());
|
}
|
catch (Exception ex)
|
{
|
if (!(result is null)) result.__data___ = false;
|
return new NumberData(0);
|
}
|
};
|
}
|
|
public string Time(bool use24hours = false)
|
{
|
var now = DateTime.Now;
|
return now.ToString(use24hours ? "HH:mm:ss" : "hh:mm:ss");
|
}
|
|
public DateTime Now()
|
{
|
return DateTime.Now;
|
}
|
|
public bool CompareString(object str1, object str2, object ignoreCase = null)
|
{
|
bool ignore = false;
|
if (ignoreCase is bool ig)
|
{
|
ignore = ig;
|
}
|
else if (ignoreCase is RuntimeVariable rv)
|
{
|
ignore = rv.__data___;
|
}
|
return string.Equals(str1.ToString(), str2.ToString(),
|
ignore ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal);
|
}
|
}
|
}
|