Files
ZuneShell.dll/ZuneShell/ZuneUI/StringParserHelper.cs

229 lines
8.6 KiB
C#

// Decompiled with JetBrains decompiler
// Type: ZuneUI.StringParserHelper
// Assembly: ZuneShell, Version=4.7.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
// MVID: FC8028F3-A47B-4FB4-B35B-11D1752D8264
// Assembly location: C:\Program Files\Zune\ZuneShell.dll
using System;
using System.Collections;
using System.Globalization;
using System.Text;
using System.Text.RegularExpressions;
namespace ZuneUI
{
public static class StringParserHelper
{
private static Regex s_notNumberRegex = new Regex("[^0-9]");
private static string s_validNumberChars = "0123456789";
public static int ParseInt32(string input)
{
int result;
int.TryParse(input, out result);
return result;
}
public static int NumberFilter(string input) => ParseInt32(s_notNumberRegex.Replace(input, string.Empty));
public static bool TryParseDate(string input, DateTimeKind dateTimeKind, out DateTime dateTime)
{
switch (dateTimeKind)
{
case DateTimeKind.Utc:
if (!DateTime.TryParse(input, out dateTime) && !DateTime.TryParse(input, CultureInfo.CurrentCulture.DateTimeFormat, DateTimeStyles.RoundtripKind, out dateTime))
{
int result;
if (!int.TryParse(input, out result) || result < 1 || result > 9999)
return false;
dateTime = new DateTime(result, 1, 1, 0, 0, 0, DateTimeKind.Utc);
}
else
dateTime = new DateTime(dateTime.Ticks, DateTimeKind.Utc);
return true;
case DateTimeKind.Local:
if (!DateTime.TryParse(input, out dateTime) && !DateTime.TryParse(input, CultureInfo.CurrentCulture.DateTimeFormat, DateTimeStyles.RoundtripKind, out dateTime))
{
int result;
if (!int.TryParse(input, out result) || result < 1 || result > 9999)
return false;
dateTime = new DateTime(result, 1, 1, 0, 0, 0, DateTimeKind.Local);
dateTime = dateTime.ToUniversalTime();
}
else
dateTime = dateTime.ToUniversalTime();
return true;
default:
return TryParseDate(input, out dateTime);
}
}
public static bool TryParseDate(string input, out DateTime dateTime)
{
if (!DateTime.TryParse(input, out dateTime) && !DateTime.TryParse(input, CultureInfo.CurrentCulture.DateTimeFormat, DateTimeStyles.RoundtripKind, out dateTime))
{
int result;
if (!int.TryParse(input, out result) || result < 1 || result > 9999)
return false;
dateTime = new DateTime(result, 1, 1, 0, 0, 0, DateTimeKind.Utc);
}
else
dateTime = dateTime.ToUniversalTime();
return true;
}
public static string CoerceToNonNegativeInt(string input)
{
if (input != null)
{
StringBuilder stringBuilder = null;
int index = 0;
int startIndex = 0;
for (; index < input.Length; ++index)
{
if (s_validNumberChars.IndexOf(input[index]) < 0)
{
if (stringBuilder == null)
stringBuilder = new StringBuilder(input);
stringBuilder.Remove(startIndex, 1);
}
else
++startIndex;
}
if (stringBuilder != null)
input = stringBuilder.ToString();
}
return input;
}
public static int ParseYear(string input)
{
int result = 0;
if (input != null && input.Length <= 4 && int.TryParse(input, out result))
{
if (result >= 0)
{
if (result < 20)
result += 2000;
else if (result < 100)
result += 1900;
else if (result < 1000)
result += 2000;
}
else
result = 0;
}
return result;
}
public static IList Split(string source, string splitCharacter) => source.Split(new string[1]
{
splitCharacter
}, StringSplitOptions.None);
public static bool IsNullOrEmptyOrBlank(string value) => string.IsNullOrEmpty(value) || value.Trim().Length == 0;
public static string HtmlTagsToLowerCase(string html)
{
if (!string.IsNullOrEmpty(html))
{
StringBuilder stringBuilder = null;
bool flag = false;
for (int index = 0; index < html.Length; ++index)
{
char c = html[index];
switch (c)
{
case '<':
flag = true;
break;
case '>':
flag = false;
break;
default:
if (!char.IsWhiteSpace(c))
break;
goto case '>';
}
if (flag && char.IsUpper(c))
{
if (stringBuilder == null)
stringBuilder = new StringBuilder(html);
stringBuilder[index] = char.ToLower(c);
}
}
if (stringBuilder != null)
html = stringBuilder.ToString();
}
return html;
}
public static string StripHtmlTags(string html)
{
if (!string.IsNullOrEmpty(html))
{
StringBuilder stringBuilder = null;
bool flag = false;
for (int index = 0; index < html.Length; ++index)
{
char ch = html[index];
if (ch == '<')
flag = true;
if (!flag)
{
if (stringBuilder == null)
stringBuilder = new StringBuilder(html.Length);
stringBuilder.Append(ch);
}
if (ch == '>')
flag = false;
}
if (stringBuilder != null)
html = stringBuilder.ToString();
}
return html;
}
public static string FormatFirmwareVersion(string version)
{
if (string.IsNullOrEmpty(version))
return string.Empty;
string[] strArray = version.Split('.');
if (strArray.Length < 3)
return version;
int int32_1 = ParseInt32(strArray[0]);
int int32_2 = ParseInt32(strArray[1]);
int int32_3 = ParseInt32(strArray[2]);
version = int32_1 != 0 ? string.Format(Shell.LoadString(StringId.IDS_FIRMWARE_VERSION_FORMAT), int32_1, int32_2, int32_3) : Shell.LoadString(StringId.IDS_DEVICE_RECOVERY_MODE);
return version;
}
public static int CompareFirmwareVersions(string versionA, string versionB)
{
string[] strArray1 = new string[3] { "0", "0", "0" };
string[] strArray2;
if (string.IsNullOrEmpty(versionA))
strArray2 = strArray1;
else
strArray2 = versionA.Split('.');
string[] strArray3;
if (string.IsNullOrEmpty(versionB))
strArray3 = strArray1;
else
strArray3 = versionB.Split('.');
int int32_1 = ParseInt32(strArray2[0]);
int int32_2 = ParseInt32(strArray2[1]);
int int32_3 = ParseInt32(strArray2[2]);
int int32_4 = ParseInt32(strArray3[0]);
int int32_5 = ParseInt32(strArray3[1]);
int int32_6 = ParseInt32(strArray3[2]);
int num1 = int32_1.CompareTo(int32_4);
int num2 = int32_2.CompareTo(int32_5);
int num3 = int32_3.CompareTo(int32_6);
if (num1 != 0)
return num1;
return num2 != 0 ? num2 : num3;
}
}
}