From f64b8d680d3c31e89c4be3d634b3f08dde90ccaa Mon Sep 17 00:00:00 2001 From: Stephan Date: Wed, 2 Oct 2013 14:00:53 +0200 Subject: [PATCH] Core.StringExtensions - switch over to the new DefaultShortStringHelper --- src/Umbraco.Core/CoreBootManager.cs | 17 ++++++++++------- src/Umbraco.Core/StringExtensions.cs | 15 ++++++++++++++- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Core/CoreBootManager.cs b/src/Umbraco.Core/CoreBootManager.cs index 57d31d7e00..6f69766f9d 100644 --- a/src/Umbraco.Core/CoreBootManager.cs +++ b/src/Umbraco.Core/CoreBootManager.cs @@ -264,14 +264,17 @@ namespace Umbraco.Core PropertyEditorValueConvertersResolver.Current.AddType(); PropertyEditorValueConvertersResolver.Current.AddType(); - // this is how we'd switch over to DefaultShortStringHelper _and_ still use - // UmbracoSettings UrlReplaceCharacters... - //ShortStringHelperResolver.Current = new ShortStringHelperResolver( - // new DefaultShortStringHelper().WithConfig(DefaultShortStringHelper.ApplyUrlReplaceCharacters)); - - // use the Legacy one for now + // use the new DefaultShortStringHelper but sort-of remain compatible + // - use UmbracoSettings UrlReplaceCharacters + // - allow underscores in terms, allow leading digits ShortStringHelperResolver.Current = new ShortStringHelperResolver( - new LegacyShortStringHelper()); + new DefaultShortStringHelper() + .WithConfig(CleanStringType.Url, DefaultShortStringHelper.ApplyUrlReplaceCharacters, + allowUnderscoreInTerm: true, allowLeadingDigits: true)); + + // that was the old one + //ShortStringHelperResolver.Current = new ShortStringHelperResolver( + // new LegacyShortStringHelper()); UrlSegmentProviderResolver.Current = new UrlSegmentProviderResolver( typeof (DefaultUrlSegmentProvider)); diff --git a/src/Umbraco.Core/StringExtensions.cs b/src/Umbraco.Core/StringExtensions.cs index e730bafbdc..8582324c51 100644 --- a/src/Umbraco.Core/StringExtensions.cs +++ b/src/Umbraco.Core/StringExtensions.cs @@ -781,8 +781,21 @@ namespace Umbraco.Core /// does initialise the resolver. private static IShortStringHelper ShortStringHelper { - get { return ShortStringHelperResolver.HasCurrent ? ShortStringHelperResolver.Current.Helper : new LegacyShortStringHelper(); } + get + { + if (ShortStringHelperResolver.HasCurrent) + return ShortStringHelperResolver.Current.Helper; + if (_helper != null) + return _helper; + + // there *has* to be a short string helper, even if the resolver has not + // been initialized - used the default one with default configuration. + _helper = new DefaultShortStringHelper().WithConfig(allowLeadingDigits: true); + _helper.Freeze(); + return _helper; + } } + private static IShortStringHelper _helper; /// /// Returns a new string in which all occurences of specified strings are replaced by other specified strings.