Was.OrcSearch – Rev 1

Subversion Repositories:
Rev:
using System.Text.RegularExpressions;

namespace Was.OrcSearch.Extensions
{
    public static class StringExtensions
    {
        public static string PrepareOrcSearchFilter(this string filter)
        {
            if (filter.StartsWith("\"") && filter.EndsWith("\""))
                return filter.Length == 2
                    ? string.Empty
                    : filter;

            if (!filter.Contains("*") &&
                !filter.Contains(":") &&
                !filter.Contains(" ") &&
                !filter.Contains("AND") &&
                !filter.Contains("OR"))
                filter += "*";

            return filter;
        }

        public static bool IsValidOrcSearchFilter(this string filter)
        {
            if (string.IsNullOrWhiteSpace(filter)) return false;

            filter = filter.Trim();
            if (filter.EndsWith(":")) return false;

            return true;
        }

        public static string ExtractRegexString(this string filter)
        {
            if (!filter.StartsWith("/") || !filter.EndsWith("/")) return string.Empty;

            filter = filter.Substring(1, filter.Length - 2);
            if (!filter.IsValidRegexPattern()) return string.Empty;

            return filter;
        }

        public static bool IsValidRegexPattern(this string pattern)
        {
            try
            {
                // ReSharper disable once ObjectCreationAsStatement
                new Regex(pattern);
                return true;
            }
            catch
            {
                // ignored
            }

            return false;
        }
    }
}

Generated by GNU Enscript 1.6.5.90.