ReviewR.Web.Infrastructure.Pluralizer.ToSingularInternal C# (CSharp) Method

ToSingularInternal() static private method

static private ToSingularInternal ( string s ) : string
s string
return string
        static string ToSingularInternal(string s)
        {
            if (string.IsNullOrEmpty(s))
            {
                return s;
            }

            // lookup special words
            Word word;

            if (_specialPlurals.TryGetValue(s, out word))
            {
                return word.Singular;
            }

            // apply suffix rules
            string singular;

            foreach (SuffixRule rule in _suffixRules)
            {
                if (rule.TryToSingular(s, out singular))
                {
                    return singular;
                }
            }

            // apply the default rule
            if (s.EndsWith("s", StringComparison.OrdinalIgnoreCase))
            {
                return s.Substring(0, s.Length - 1);
            }

            return s;
        }