Example #1
0
        /// <summary>
        /// Converts the given string to a web safe permalink.
        /// </summary>
        /// <param name="str">The string</param>
        /// <param name="type">Optional permalink type</param>
        /// <returns>A permalink</returns>
        public static string Generate(string str, PermalinkType type = PermalinkType.PAGE)
        {
            var suffix = "";

            if (type == PermalinkType.MEDIA)
            {
                var segments = str.Split(new char[] { '.' });
                if (segments.Length > 1)
                {
                    suffix = segments[segments.Length - 1];

                    str = segments.Subset(0, segments.Length - 1).Implode(".");
                }
            }

            var perm = Regex.Replace(str.ToLower().Replace(" ", "-").Replace("å", "a").Replace("ä", "a").Replace("ö", "o"),
                                     @"[^a-z0-9-/]", "").Replace("--", "-");

            if (perm.EndsWith("-"))
            {
                perm = perm.Substring(0, perm.LastIndexOf("-"));
            }
            if (perm.StartsWith("-"))
            {
                perm = perm.Substring(Math.Min(perm.IndexOf("-") + 1, perm.Length));
            }

            return(perm + (!String.IsNullOrEmpty(suffix) ? "." + suffix : ""));
        }
Example #2
0
        /// <summary>
        /// Converts the given string to a web safe permalink.
        /// </summary>
        /// <param name="str">The string</param>
        /// <param name="type">Optional permalink type</param>
        /// <returns>A permalink</returns>
        public static string Generate(string str, PermalinkType type = PermalinkType.PAGE)
        {
            if (EntityHooks.Permalink.OverridePermalinkGenerate != null)
            {
                return(EntityHooks.Permalink.OverridePermalinkGenerate(str, type));
            }
            else
            {
                var suffix = "";

                if (type == PermalinkType.MEDIA)
                {
                    var segments = str.Split(new char[] { '.' });
                    if (segments.Length > 1)
                    {
                        suffix = segments[segments.Length - 1];

                        str = segments.Subset(0, segments.Length - 1).Implode(".");
                    }
                }

                str = str.ToLower().TransliterateRussianToLatin();

                var perm = Regex.Replace(str
                                         .Replace(" ", "-")
                                         .Replace("å", "a")
                                         .Replace("ä", "a")
                                         .Replace("á", "a")
                                         .Replace("à", "a")
                                         .Replace("ö", "o")
                                         .Replace("ó", "o")
                                         .Replace("ò", "o")
                                         .Replace("é", "e")
                                         .Replace("è", "e")
                                         .Replace("í", "i")
                                         .Replace("ì", "i"), @"[^a-z0-9-/]", "").Replace("--", "-");

                if (perm.EndsWith("-"))
                {
                    perm = perm.Substring(0, perm.LastIndexOf("-"));
                }
                if (perm.StartsWith("-"))
                {
                    perm = perm.Substring(Math.Min(perm.IndexOf("-") + 1, perm.Length));
                }

                return(perm + (!String.IsNullOrEmpty(suffix) ? "." + suffix : ""));
            }
        }