Skip to content

Commit 40ada4e

Browse files
committed
Implements: Update the Markdown parser and markdown content type to better support code snippets #341
1 parent 5a5d3b3 commit 40ada4e

File tree

4 files changed

+54
-5
lines changed

4 files changed

+54
-5
lines changed

src/Articulate.Web/App_Plugins/Articulate/Themes/VAPOR/Views/Post.cshtml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66
ViewBag.CssBodyClass = "post-template";
77
}
88

9+
@section header
10+
{
11+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/themes/prism.min.css" integrity="sha512-tN7Ec6zAFaVSG3TpNAKtk4DOHNpSwKHxxrsiw4GHKESGPs5njn/0sMCUMl2svV4wo4BK/rCP7juYz+zx+l6oeQ==" crossorigin="anonymous" />
12+
}
13+
914
<main class="content" role="main">
1015

1116
<article class="post">
@@ -87,3 +92,6 @@
8792
</article>
8893

8994
</main>
95+
96+
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/components/prism-core.min.js" integrity="sha512-xR+IAyN+t9EBIOOJw5m83FTVMDsPd63IhJ3ElP4gmfUFnQlX9+eWGLp3P4t3gIjpo2Z1JzqtW/5cjgn+oru3yQ==" crossorigin="anonymous"></script>
97+
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.23.0/plugins/autoloader/prism-autoloader.min.js" integrity="sha512-zc7WDnCM3aom2EziyDIRAtQg1mVXLdILE09Bo+aE1xk0AM2c2cVLfSW9NrxE5tKTX44WBY0Z2HClZ05ur9vB6A==" crossorigin="anonymous"></script>

src/Articulate/Articulate.csproj

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,12 @@
228228
<Reference Include="Lucene.Net, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL">
229229
<HintPath>..\packages\Lucene.Net.3.0.3\lib\NET40\Lucene.Net.dll</HintPath>
230230
</Reference>
231+
<Reference Include="Markdig, Version=0.23.0.0, Culture=neutral, processorArchitecture=MSIL">
232+
<HintPath>..\packages\Markdig.0.23.0\lib\net452\Markdig.dll</HintPath>
233+
</Reference>
234+
<Reference Include="Markdig.Prism, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
235+
<HintPath>..\packages\WebStoating.Markdig.Prism.1.0.0\lib\netstandard2.0\Markdig.Prism.dll</HintPath>
236+
</Reference>
231237
<Reference Include="Markdown, Version=2.0.0.0, Culture=neutral, PublicKeyToken=1b320cc08ad5aa89, processorArchitecture=MSIL">
232238
<HintPath>..\packages\Markdown.2.2.1\lib\net451\Markdown.dll</HintPath>
233239
</Reference>
@@ -317,6 +323,9 @@
317323
<HintPath>..\packages\Superpower.2.0.0\lib\net45\Superpower.dll</HintPath>
318324
</Reference>
319325
<Reference Include="System" />
326+
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
327+
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
328+
</Reference>
320329
<Reference Include="System.ComponentModel" />
321330
<Reference Include="System.ComponentModel.DataAnnotations" />
322331
<Reference Include="System.Configuration" />
@@ -337,12 +346,22 @@
337346
<Reference Include="System.IO" />
338347
<Reference Include="System.Linq.Expressions" />
339348
<Reference Include="System.Management" />
349+
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
350+
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
351+
</Reference>
340352
<Reference Include="System.Net.Http" />
341353
<Reference Include="System.Net.Http.Formatting, Version=5.2.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
342354
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.7\lib\net45\System.Net.Http.Formatting.dll</HintPath>
343355
</Reference>
356+
<Reference Include="System.Numerics" />
357+
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
358+
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
359+
</Reference>
344360
<Reference Include="System.Runtime" />
345361
<Reference Include="System.Runtime.Caching" />
362+
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
363+
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
364+
</Reference>
346365
<Reference Include="System.Runtime.Serialization" />
347366
<Reference Include="System.Security" />
348367
<Reference Include="System.ServiceModel" />
Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
using Umbraco.Core.Logging;
1+
using Markdig;
2+
using Markdig.Prism;
3+
using System.Web;
4+
using Umbraco.Core.Logging;
25
using Umbraco.Core.Models.PublishedContent;
36
using Umbraco.Core.PropertyEditors;
47
using Umbraco.Web.PropertyEditors;
58
using Umbraco.Web.PropertyEditors.ValueConverters;
69

710
namespace Articulate.PropertyEditors
811
{
9-
//TODO: INVESTIGATE IF THIS IS FIXED IN V8 CORE - SEEMS STUPID TO HAVE TO HACK THIS
10-
11-
//NOTE: THis is ONLY overridden because the core markdown editor is nvarchar not ntext!
12+
1213
[DataEditor("Articulate.MarkdownEditor", "Articulate Markdown editor", "markdowneditor", ValueType = "TEXT")]
1314
public class ArticulateMarkdownPropertyEditor : MarkdownPropertyEditor
1415
{
@@ -17,10 +18,25 @@ public ArticulateMarkdownPropertyEditor(ILogger logger) : base(logger)
1718
}
1819
}
1920

20-
//Ugh, this is necessary since we have a custom one - wish we didn't ship this in this version, next major we should remove all of this
21+
// using a reasonable Markdown converter
2122
public class ArticulateMarkdownEditorValueConverter : MarkdownEditorValueConverter
2223
{
24+
private static readonly MarkdownPipeline MarkdownPipeline = new MarkdownPipelineBuilder()
25+
.UseAdvancedExtensions()
26+
.UsePrism()
27+
.Build();
28+
2329
public override bool IsConverter(IPublishedPropertyType propertyType)
2430
=> "Articulate.MarkdownEditor" == propertyType.EditorAlias;
31+
32+
public override object ConvertIntermediateToObject(
33+
IPublishedElement owner,
34+
IPublishedPropertyType propertyType,
35+
PropertyCacheLevel referenceCacheLevel,
36+
object inter,
37+
bool preview)
38+
{
39+
return new HtmlString((inter == null) ? string.Empty : Markdown.ToHtml((string)inter, MarkdownPipeline));
40+
}
2541
}
2642
}

src/Articulate/packages.config

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
<package id="LightInject.Web" version="2.0.0" targetFramework="net472" />
1717
<package id="LightInject.WebApi" version="2.0.0" targetFramework="net472" />
1818
<package id="Lucene.Net" version="3.0.3" targetFramework="net472" />
19+
<package id="Markdig" version="0.23.0" targetFramework="net472" />
1920
<package id="Markdown" version="2.2.1" targetFramework="net472" />
2021
<package id="Microsoft.AspNet.Identity.Core" version="2.2.2" targetFramework="net472" />
2122
<package id="Microsoft.AspNet.Identity.Owin" version="2.2.2" targetFramework="net472" />
@@ -53,12 +54,17 @@
5354
<package id="Serilog.Sinks.Map" version="1.0.0" targetFramework="net472" />
5455
<package id="SharpZipLib" version="0.86.0" targetFramework="net472" />
5556
<package id="Superpower" version="2.0.0" targetFramework="net472" />
57+
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
5658
<package id="System.Diagnostics.DiagnosticSource" version="4.4.1" targetFramework="net472" />
59+
<package id="System.Memory" version="4.5.4" targetFramework="net472" />
60+
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
61+
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net472" />
5762
<package id="System.Threading.Tasks.Dataflow" version="4.9.0" targetFramework="net472" />
5863
<package id="System.ValueTuple" version="4.5.0" targetFramework="net472" />
5964
<package id="Umbraco.SqlServerCE" version="4.0.0.1" targetFramework="net472" />
6065
<package id="UmbracoCms.Core" version="8.2.3" targetFramework="net472" />
6166
<package id="UmbracoCms.Web" version="8.2.3" targetFramework="net472" />
67+
<package id="WebStoating.Markdig.Prism" version="1.0.0" targetFramework="net472" />
6268
<package id="xmlrpcnet" version="3.0.0.266" targetFramework="net472" />
6369
<package id="xmlrpcnet-server" version="3.0.0.266" targetFramework="net472" />
6470
</packages>

0 commit comments

Comments
 (0)