Advertisement
commodore73

struct to model markdown fields

Jul 23rd, 2020
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.40 KB | None | 0 0
  1. namespace Root.Core.Models.Fields
  2. {
  3.     using System;
  4.  
  5.     using Microsoft.AspNetCore.Html;
  6.    
  7.     using Markdig;
  8.     public readonly struct MarkdownField
  9.     {
  10.         private readonly string _markup;
  11.  
  12.         public MarkdownField(string markdown)
  13.         {
  14.             RawMarkdown = markdown;
  15.  
  16.             if (String.IsNullOrEmpty(RawMarkdown))
  17.             {
  18.                 _markup = String.Empty;
  19.             }
  20.             else
  21.             {
  22.                 _markup = Markdown.ToHtml(
  23.                     RawMarkdown,
  24.                     new MarkdownPipelineBuilder().UseAdvancedExtensions().Build());
  25.             }
  26.         }
  27.  
  28.         public static implicit operator MarkdownField(string input)
  29.         {
  30.             return new MarkdownField(input);
  31.         }
  32.  
  33.         public static implicit operator string(MarkdownField input)
  34.         {
  35.             return input.ToString();
  36.         }
  37.  
  38.         public static implicit operator HtmlString(MarkdownField input)
  39.         {
  40.             return new HtmlString(input.ToString());
  41.         }
  42.  
  43.         public string RawMarkdown { get; }
  44.  
  45.         public HtmlString Markup
  46.         {
  47.             get
  48.             {
  49.                 return new HtmlString(_markup);
  50.             }
  51.         }
  52.  
  53.         public override string ToString()
  54.         {
  55.             //TODO: WebUtility.HtmlEncode?
  56.             return Markup.ToString();
  57.         }
  58.     }
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement