mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-12-02 03:17:32 +08:00
#19426: Updating slugify method to take in to account contiguous dashes
Work Item: 19426 --HG-- branch : 1.x
This commit is contained in:
@@ -0,0 +1,33 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Moq;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using Orchard.Autoroute.Services;
|
||||||
|
|
||||||
|
namespace Orchard.Tests.Modules.Autoroute {
|
||||||
|
[TestFixture]
|
||||||
|
public class DefaultSlugServiceTests {
|
||||||
|
[Test]
|
||||||
|
public void ShouldStripContiguousDashes() {
|
||||||
|
DefaultSlugService slugService = new DefaultSlugService(new Mock<ISlugEventHandler>().Object);
|
||||||
|
|
||||||
|
Assert.That(slugService.Slugify("a - b"), Is.EqualTo("a-b"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ShouldStripContiguousDashes2() {
|
||||||
|
DefaultSlugService slugService = new DefaultSlugService(new Mock<ISlugEventHandler>().Object);
|
||||||
|
|
||||||
|
Assert.That(slugService.Slugify("a - - - - - -b"), Is.EqualTo("a-b"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void ShouldStripContiguousDashesEverywhere() {
|
||||||
|
DefaultSlugService slugService = new DefaultSlugService(new Mock<ISlugEventHandler>().Object);
|
||||||
|
|
||||||
|
Assert.That(slugService.Slugify("a - b - c -- d"), Is.EqualTo("a-b-c-d"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -137,6 +137,7 @@
|
|||||||
<Reference Include="WindowsBase" />
|
<Reference Include="WindowsBase" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Include="Autoroute\DefaultSlugServiceTests.cs" />
|
||||||
<Compile Include="CodeGeneration\Commands\CodeGenerationCommandsTests.cs" />
|
<Compile Include="CodeGeneration\Commands\CodeGenerationCommandsTests.cs" />
|
||||||
<Compile Include="Comments\Services\CommentServiceTests.cs" />
|
<Compile Include="Comments\Services\CommentServiceTests.cs" />
|
||||||
<Compile Include="Email\EmailChannelTests.cs" />
|
<Compile Include="Email\EmailChannelTests.cs" />
|
||||||
@@ -197,6 +198,10 @@
|
|||||||
<Project>{D5D447D7-EF8E-43A6-B9A4-3B025DD9F45D}</Project>
|
<Project>{D5D447D7-EF8E-43A6-B9A4-3B025DD9F45D}</Project>
|
||||||
<Name>Lucene</Name>
|
<Name>Lucene</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\Orchard.Web\Modules\Orchard.Autoroute\Orchard.Autoroute.csproj">
|
||||||
|
<Project>{66fccd76-2761-47e3-8d11-b45d0001ddaa}</Project>
|
||||||
|
<Name>Orchard.Autoroute</Name>
|
||||||
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\Orchard.Web\Modules\Orchard.CodeGeneration\Orchard.CodeGeneration.csproj">
|
<ProjectReference Include="..\Orchard.Web\Modules\Orchard.CodeGeneration\Orchard.CodeGeneration.csproj">
|
||||||
<Project>{C0C45321-B51D-4D8D-9B7B-AA4C2E0B2962}</Project>
|
<Project>{C0C45321-B51D-4D8D-9B7B-AA4C2E0B2962}</Project>
|
||||||
<Name>Orchard.CodeGeneration</Name>
|
<Name>Orchard.CodeGeneration</Name>
|
||||||
|
|||||||
@@ -28,7 +28,9 @@ namespace Orchard.Autoroute.Services {
|
|||||||
|
|
||||||
var disallowed = new Regex(@"[/:?#\[\]@!$&'()*+,;=\s\""\<\>\\\|%]+");
|
var disallowed = new Regex(@"[/:?#\[\]@!$&'()*+,;=\s\""\<\>\\\|%]+");
|
||||||
|
|
||||||
slugContext.Slug = disallowed.Replace(slugContext.Title, "-").Trim('-','.');
|
var cleanedSlug = disallowed.Replace(slugContext.Title, "-").Trim('-','.').Replace("--", "-");
|
||||||
|
|
||||||
|
slugContext.Slug = Regex.Replace(cleanedSlug, @"\-{2,}", "-");
|
||||||
|
|
||||||
if (slugContext.Slug.Length > 1000)
|
if (slugContext.Slug.Length > 1000)
|
||||||
slugContext.Slug = slugContext.Slug.Substring(0, 1000).Trim('-', '.');
|
slugContext.Slug = slugContext.Slug.Substring(0, 1000).Trim('-', '.');
|
||||||
|
|||||||
Reference in New Issue
Block a user