@@ -18,10 +18,9 @@ namespace Shadowsocks.Controller | |||||
{ | { | ||||
using (var sr = new StringReader(Resources.cn)) | using (var sr = new StringReader(Resources.cn)) | ||||
{ | { | ||||
string line; | |||||
while ((line = sr.ReadLine()) != null) | |||||
foreach (var line in sr.NonWhiteSpaceLines()) | |||||
{ | { | ||||
if (line.BeginWith('#')) | |||||
if (line[0] == '#') | |||||
continue; | continue; | ||||
var pos = line.IndexOf('='); | var pos = line.IndexOf('='); | ||||
@@ -42,8 +42,7 @@ namespace Shadowsocks.Controller | |||||
string local = File.ReadAllText(PACServer.USER_RULE_FILE, Encoding.UTF8); | string local = File.ReadAllText(PACServer.USER_RULE_FILE, Encoding.UTF8); | ||||
using (var sr = new StringReader(local)) | using (var sr = new StringReader(local)) | ||||
{ | { | ||||
string rule; | |||||
while ((rule = sr.ReadLine()) != null) | |||||
foreach (var rule in sr.NonWhiteSpaceLines()) | |||||
{ | { | ||||
if (rule.BeginWithAny(IgnoredLineBegins)) | if (rule.BeginWithAny(IgnoredLineBegins)) | ||||
continue; | continue; | ||||
@@ -100,8 +99,7 @@ namespace Shadowsocks.Controller | |||||
List<string> valid_lines = new List<string>(); | List<string> valid_lines = new List<string>(); | ||||
using (var sr = new StringReader(content)) | using (var sr = new StringReader(content)) | ||||
{ | { | ||||
string line; | |||||
while ((line = sr.ReadLine()) != null) | |||||
foreach (var line in sr.NonWhiteSpaceLines()) | |||||
{ | { | ||||
if (line.BeginWithAny(IgnoredLineBegins)) | if (line.BeginWithAny(IgnoredLineBegins)) | ||||
continue; | continue; | ||||
@@ -457,8 +457,7 @@ namespace Shadowsocks.Controller | |||||
string local = File.ReadAllText(PACServer.USER_RULE_FILE, Encoding.UTF8); | string local = File.ReadAllText(PACServer.USER_RULE_FILE, Encoding.UTF8); | ||||
using (var sr = new StringReader(local)) | using (var sr = new StringReader(local)) | ||||
{ | { | ||||
string rule; | |||||
while ((rule = sr.ReadLine()) != null) | |||||
foreach (var rule in sr.NonWhiteSpaceLines()) | |||||
{ | { | ||||
if (rule.BeginWithAny(IgnoredLineBegins)) | if (rule.BeginWithAny(IgnoredLineBegins)) | ||||
continue; | continue; | ||||
@@ -1,6 +1,7 @@ | |||||
using System; | using System; | ||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Globalization; | using System.Globalization; | ||||
using System.IO; | |||||
using System.Linq; | using System.Linq; | ||||
using System.Text; | using System.Text; | ||||
@@ -26,6 +27,17 @@ static partial class StringEx | |||||
public static bool IsNullOrWhiteSpace(this string value) | public static bool IsNullOrWhiteSpace(this string value) | ||||
=> string.IsNullOrWhiteSpace(value); | => string.IsNullOrWhiteSpace(value); | ||||
public static bool IsWhiteSpace(this string value) | |||||
{ | |||||
foreach(var c in value) | |||||
{ | |||||
if (char.IsWhiteSpace(c)) continue; | |||||
return false; | |||||
} | |||||
return true; | |||||
} | |||||
#if !PCL | #if !PCL | ||||
public static string IsInterned(this string value) | public static string IsInterned(this string value) | ||||
{ | { | ||||
@@ -135,6 +147,35 @@ static partial class StringEx | |||||
#endregion | #endregion | ||||
#region ToLines | |||||
public static IEnumerable<string> ToLines(this TextReader reader) | |||||
{ | |||||
string line; | |||||
while ((line = reader.ReadLine()) != null) | |||||
yield return line; | |||||
} | |||||
public static IEnumerable<string> NonEmptyLines(this TextReader reader) | |||||
{ | |||||
string line; | |||||
while ((line = reader.ReadLine()) != null) | |||||
{ | |||||
if (line == "") continue; | |||||
yield return line; | |||||
} | |||||
} | |||||
public static IEnumerable<string> NonWhiteSpaceLines(this TextReader reader) | |||||
{ | |||||
string line; | |||||
while ((line = reader.ReadLine()) != null) | |||||
{ | |||||
if (line.IsWhiteSpace()) continue; | |||||
yield return line; | |||||
} | |||||
} | |||||
#endregion | |||||
#region others | #region others | ||||
private static readonly char[][] Quotes = new[] | private static readonly char[][] Quotes = new[] | ||||
@@ -8,6 +8,6 @@ | |||||
<package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="net40-client" /> | <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="Microsoft.Net.Http" version="2.0.20710.0" targetFramework="net4-client" /> | ||||
<package id="Newtonsoft.Json" version="8.0.2" targetFramework="net40-client" /> | <package id="Newtonsoft.Json" version="8.0.2" targetFramework="net40-client" /> | ||||
<package id="StringEx" version="0.1.1" targetFramework="net40-client" /> | |||||
<package id="StringEx" version="0.2" targetFramework="net40-client" /> | |||||
<package id="System.Net.Http" version="2.0.20710.0" targetFramework="net40-client" /> | <package id="System.Net.Http" version="2.0.20710.0" targetFramework="net40-client" /> | ||||
</packages> | </packages> |