diff --git a/src/FilterLists.Services/SnapshotService/RawRuleLinterExtensions.cs b/src/FilterLists.Services/SnapshotService/RawRuleLinterExtensions.cs index 5ad81ddcf..fae389377 100644 --- a/src/FilterLists.Services/SnapshotService/RawRuleLinterExtensions.cs +++ b/src/FilterLists.Services/SnapshotService/RawRuleLinterExtensions.cs @@ -2,14 +2,14 @@ { public static class RawRuleLinterExtensions { - //TODO: resolve issues and/or track dropped rules public static string LintStringForMySql(this string rule) { rule = rule.TrimLeadingAndTrailingWhitespace(); rule = rule.DropIfEmpty(); - rule = rule.TrimSingleBackslashFromEnd(); - rule = rule.DropIfContainsBackslashSingleQuote(); + rule = rule.DropIfComment(); rule = rule.DropIfTooLong(); + rule = rule.DropIfContainsBackslashSingleQuote(); + rule = rule.TrimSingleBackslashFromEnd(); return rule; } @@ -24,13 +24,18 @@ private static string DropIfEmpty(this string rule) return rule == "" ? null : rule; } - private static string TrimSingleBackslashFromEnd(this string rule) + private static string DropIfComment(this string rule) { if (rule != null) - return rule.EndsWith(@"\") && !rule.EndsWith(@"\\") ? rule.Remove(rule.Length - 1) : rule; + return rule.StartsWith(@"!") && !rule.StartsWith(@"!#") ? null : rule; return null; } + private static string DropIfTooLong(this string rule) + { + return rule?.Length > 8192 ? null : rule; + } + private static string DropIfContainsBackslashSingleQuote(this string rule) { if (rule != null) @@ -38,9 +43,11 @@ private static string DropIfContainsBackslashSingleQuote(this string rule) return null; } - private static string DropIfTooLong(this string rule) + private static string TrimSingleBackslashFromEnd(this string rule) { - return rule?.Length > 8192 ? null : rule; + if (rule != null) + return rule.EndsWith(@"\") && !rule.EndsWith(@"\\") ? rule.Remove(rule.Length - 1) : rule; + return null; } } } \ No newline at end of file