Browse Source

using StringEx

tags/3.2
Licshee 9 years ago
parent
commit
687f397ae3
8 changed files with 207 additions and 9 deletions
  1. +1
    -1
      shadowsocks-csharp/Controller/System/SystemProxy.cs
  2. +1
    -1
      shadowsocks-csharp/Encryption/EncryptorFactory.cs
  3. +2
    -2
      shadowsocks-csharp/Model/Configuration.cs
  4. +2
    -2
      shadowsocks-csharp/Model/Server.cs
  5. +196
    -0
      shadowsocks-csharp/StringEx.cs
  6. +3
    -3
      shadowsocks-csharp/View/MenuViewController.cs
  7. +1
    -0
      shadowsocks-csharp/packages.config
  8. +1
    -0
      shadowsocks-csharp/shadowsocks-csharp.csproj

+ 1
- 1
shadowsocks-csharp/Controller/System/SystemProxy.cs View File

@@ -60,7 +60,7 @@ namespace Shadowsocks.Controller
else
{
string pacUrl;
if (config.useOnlinePac && !string.IsNullOrEmpty(config.pacUrl))
if (config.useOnlinePac && !config.pacUrl.IsNullOrEmpty())
pacUrl = config.pacUrl;
else
pacUrl = $"http://127.0.0.1:{config.localPort}/pac?t={GetTimestamp(DateTime.Now)}";


+ 1
- 1
shadowsocks-csharp/Encryption/EncryptorFactory.cs View File

@@ -25,7 +25,7 @@ namespace Shadowsocks.Encryption
public static IEncryptor GetEncryptor(string method, string password, bool onetimeauth, bool isudp)
{
if (string.IsNullOrEmpty(method))
if (method.IsNullOrEmpty())
{
method = "aes-256-cfb";
}


+ 2
- 2
shadowsocks-csharp/Model/Configuration.cs View File

@@ -124,13 +124,13 @@ namespace Shadowsocks.Model
private static void CheckPassword(string password)
{
if (string.IsNullOrEmpty(password))
if (password.IsNullOrEmpty())
throw new ArgumentException(I18N.GetString("Password can not be blank"));
}
private static void CheckServer(string server)
{
if (string.IsNullOrEmpty(server))
if (server.IsNullOrEmpty())
throw new ArgumentException(I18N.GetString("Server IP can not be blank"));
}
}


+ 2
- 2
shadowsocks-csharp/Model/Server.cs View File

@@ -29,11 +29,11 @@ namespace Shadowsocks.Model
public string FriendlyName()
{
if (string.IsNullOrEmpty(server))
if (server.IsNullOrEmpty())
{
return I18N.GetString("New server");
}
if (string.IsNullOrEmpty(remarks))
if (remarks.IsNullOrEmpty())
{
return server + ":" + server_port;
}


+ 196
- 0
shadowsocks-csharp/StringEx.cs View File

@@ -0,0 +1,196 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;

static partial class StringEx
{
#pragma warning disable 1591

public static StringComparison GlobalDefaultComparison { get; set; } = StringComparison.Ordinal;

[ThreadStatic]
private static StringComparison? _DefaultComparison;
public static StringComparison DefaultComparison
{
get { return _DefaultComparison ?? GlobalDefaultComparison; }
set { _DefaultComparison = value; }
}

#region basic String methods

public static bool IsNullOrEmpty(this string value)
=> string.IsNullOrEmpty(value);

public static bool IsNullOrWhiteSpace(this string value)
=> string.IsNullOrWhiteSpace(value);

#if !PCL
public static string IsInterned(this string value)
{
if (value == null)
throw new ArgumentNullException(nameof(value));

return string.IsInterned(value);
}

public static string Intern(this string value)
{
if (value == null)
throw new ArgumentNullException(nameof(value));

return string.Intern(value);
}
#endif

#endregion

#region comparing

#region Is

public static bool Is(this string a, string b)
=> string.Equals(a, b, DefaultComparison);
public static bool Is(this string a, string b, StringComparison comparisonType)
=> string.Equals(a, b, comparisonType);

#endregion

#region BeginWith

public static bool BeginWith(this string s, char c)
{
if (s.IsNullOrEmpty()) return false;
return s[0] == c;
}
public static bool BeginWithAny(this string s, IEnumerable<char> chars)
{
if (s.IsNullOrEmpty()) return false;
return chars.Contains(s[0]);
}
public static bool BeginWithAny(this string s, params char[] chars)
=> s.BeginWithAny(chars.AsEnumerable());

public static bool BeginWith(this string a, string b)
{
if (a == null || b == null) return false;

return a.StartsWith(b, DefaultComparison);
}
public static bool BeginWith(this string a, string b, StringComparison comparisonType)
{
if (a == null || b == null) return false;

return a.StartsWith(b, comparisonType);
}
#if !PCL
public static bool BeginWith(this string a, string b, bool ignoreCase, CultureInfo culture)
{
if (a == null || b == null) return false;

return a.StartsWith(b, ignoreCase, culture);
}
#endif

#endregion

#region FinishWith

public static bool FinishWith(this string s, char c)
{
if (s.IsNullOrEmpty()) return false;
return s.Last() == c;
}
public static bool FinishWithAny(this string s, IEnumerable<char> chars)
{
if (s.IsNullOrEmpty()) return false;
return chars.Contains(s.Last());
}
public static bool FinishWithAny(this string s, params char[] chars)
=> s.FinishWithAny(chars.AsEnumerable());

public static bool FinishWith(this string a, string b)
{
if (a == null || b == null) return false;

return a.EndsWith(b, DefaultComparison);
}
public static bool FinishWith(this string a, string b, StringComparison comparisonType)
{
if (a == null || b == null) return false;

return a.EndsWith(b, comparisonType);
}
#if !PCL
public static bool FinishWith(this string a, string b, bool ignoreCase, CultureInfo culture)
{
if (a == null || b == null) return false;

return a.EndsWith(b, ignoreCase, culture);
}
#endif

#endregion

#endregion

#region others

private static readonly char[][] Quotes = new[]
{
"\"\"",
"''",
"“”",
"‘’",
"『』",
"「」",
"〖〗",
"【】",
}.Select(s => s.ToCharArray()).ToArray();
public static string Enquote(this string value)
{
if (value == null)
return "(null)";

foreach (var pair in Quotes)
{
if (value.IndexOfAny(pair) < 0)
return pair[0] + value + pair[1];
}

return '"' + value.Replace("\\", @"\\").Replace("\"", @"\""") + '"';
}

public static string Replace(this string value, string find, string rep, StringComparison comparsionType)
{
if (find.IsNullOrEmpty())
throw new ArgumentException(null, nameof(find));
if (rep == null)
rep = "";
if (value.IsNullOrEmpty())
return value;

var sb = new StringBuilder(value.Length);

var last = 0;
var len = find.Length;
var idx = value.IndexOf(find, DefaultComparison);
while (idx != -1)
{
sb.Append(value.Substring(last, idx - last));
sb.Append(rep);
idx += len;

last = idx;
idx = value.IndexOf(find, idx, comparsionType);
}
sb.Append(value.Substring(last));

return sb.ToString();
}
public static string ReplaceEx(this string value, string find, string rep)
=> value.Replace(find, rep, DefaultComparison);

#endregion
}

+ 3
- 3
shadowsocks-csharp/View/MenuViewController.cs View File

@@ -630,11 +630,11 @@ namespace Shadowsocks.View
{
if (!onlinePACItem.Checked)
{
if (String.IsNullOrEmpty(controller.GetConfigurationCopy().pacUrl))
if (controller.GetConfigurationCopy().pacUrl.IsNullOrEmpty())
{
UpdateOnlinePACURLItem_Click(sender, e);
}
if (!String.IsNullOrEmpty(controller.GetConfigurationCopy().pacUrl))
if (!controller.GetConfigurationCopy().pacUrl.IsNullOrEmpty())
{
localPACItem.Checked = false;
onlinePACItem.Checked = true;
@@ -651,7 +651,7 @@ namespace Shadowsocks.View
I18N.GetString("Please input PAC Url"),
I18N.GetString("Edit Online PAC URL"),
origPacUrl, -1, -1);
if (!string.IsNullOrEmpty(pacUrl) && pacUrl != origPacUrl)
if (!pacUrl.IsNullOrEmpty() && pacUrl != origPacUrl)
{
controller.SavePACUrl(pacUrl);
}


+ 1
- 0
shadowsocks-csharp/packages.config View File

@@ -8,5 +8,6 @@
<package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="net40-client" />
<package id="Microsoft.Net.Http" version="2.0.20710.0" targetFramework="net4-client" />
<package id="Newtonsoft.Json" version="8.0.2" targetFramework="net40-client" />
<package id="StringEx" version="0.1.1" targetFramework="net40-client" />
<package id="System.Net.Http" version="2.0.20710.0" targetFramework="net40-client" />
</packages>

+ 1
- 0
shadowsocks-csharp/shadowsocks-csharp.csproj View File

@@ -204,6 +204,7 @@
<Compile Include="Controller\Strategy\BalancingStrategy.cs" />
<Compile Include="Controller\Strategy\StrategyManager.cs" />
<Compile Include="Controller\Strategy\IStrategy.cs" />
<Compile Include="StringEx.cs" />
<Compile Include="Util\Util.cs" />
<Compile Include="View\ConfigForm.cs">
<SubType>Form</SubType>


Loading…
Cancel
Save