Advertisement
Cieslin

MarkdownTOC

Dec 12th, 2018
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.79 KB | None | 0 0
  1. using System.IO;
  2. using System.Text;
  3. using System.Text.RegularExpressions;
  4.  
  5. namespace VII_2656.TOC
  6. {
  7.     public static class MarkdownTOC
  8.     {
  9.         private static readonly string _pattern = @"^(#{1,6}.*)"; // @"(\#+\s\w+).*$"
  10.         private static Regex _regex;
  11.         private static MatchCollection _matchCollection;
  12.         private static int _start;
  13.         private static string _markdownTOC;
  14.         private static string _markdownWithIdentifiers;
  15.         private static string _markdownSub;
  16.         private static readonly string _pathMD = @"E:\Nazca\VII-2656\VII-2656\MD\Variable.pl.md";
  17.         private static readonly string _pathSave = @"E:\Nazca\VII-2656\VII-2656\MD\Markdown_R.md";
  18.  
  19.         public static string GetMarkdownTOC()
  20.         {
  21.             return _markdownTOC;
  22.         }
  23.  
  24.         public static string GetMarkdownWithIdentifiers()
  25.         {
  26.             return _markdownWithIdentifiers;
  27.         }
  28.  
  29.         public static string GetMarkdownSub()
  30.         {
  31.             return _markdownSub;
  32.         }
  33.  
  34.         public static void SaveMarkdownToFile()
  35.         {
  36.             File.WriteAllText(_pathSave, _markdownSub, Encoding.UTF8);
  37.         }
  38.  
  39.         public static string GenerateMarkdownIdentifiers()
  40.         {
  41.             var stringFromFile = File.ReadAllText(_pathMD);
  42.             _regex = new Regex(_pattern, RegexOptions.Multiline);
  43.             _matchCollection = _regex.Matches(stringFromFile);
  44.             foreach (var match in _matchCollection)
  45.             {
  46.                 _start = stringFromFile.IndexOf(match.ToString()) + match.ToString().Length - 1;
  47.                 var stringBuilder = new StringBuilder(match.ToString());
  48.                 stringBuilder.Replace("#", "");
  49.                 stringBuilder.Replace("ą", "a");
  50.                 stringBuilder.Replace("ć", "c");
  51.                 stringBuilder.Replace("ę", "e");
  52.                 stringBuilder.Replace("ł", "l");
  53.                 stringBuilder.Replace("ń", "n");
  54.                 stringBuilder.Replace("ó", "o");
  55.                 stringBuilder.Replace("ś", "s");
  56.                 stringBuilder.Replace("ź", "z");
  57.                 stringBuilder.Replace("ż", "z");
  58.                 stringBuilder.Remove(0, 1);
  59.                 stringBuilder.Remove(stringBuilder.ToString().Length - 1, 1);
  60.                 stringFromFile
  61.                     = stringFromFile
  62.                         .Insert(_start, " <a name="
  63.                                         + @""
  64.                                         + stringBuilder
  65.                                             .ToString()
  66.                                             .ToLower()
  67.                                             .Replace(" ", "_")
  68.                                             .Trim()
  69.                                         + @""
  70.                                         + "></a>");
  71.             }
  72.  
  73.             _markdownWithIdentifiers = stringFromFile;
  74.             return _markdownWithIdentifiers;
  75.         }
  76.  
  77.         public static string GenerateMarkdownTOC()
  78.         {
  79.             var stringFromFile = File.ReadAllText(_pathMD);
  80.             _regex = new Regex(_pattern, RegexOptions.Multiline);
  81.             _matchCollection = _regex.Matches(stringFromFile);
  82.             foreach (var match in _matchCollection)
  83.             {
  84.                 _start = stringFromFile.IndexOf(match.ToString()) + match.ToString().Length - 1;
  85.                 var stringBuilder = new StringBuilder(match.ToString());
  86.                 stringBuilder.Replace("#", "");
  87.                 stringBuilder.Replace("ą", "a");
  88.                 stringBuilder.Replace("ć", "c");
  89.                 stringBuilder.Replace("ę", "e");
  90.                 stringBuilder.Replace("ł", "l");
  91.                 stringBuilder.Replace("ń", "n");
  92.                 stringBuilder.Replace("ó", "o");
  93.                 stringBuilder.Replace("ś", "s");
  94.                 stringBuilder.Replace("ź", "z");
  95.                 stringBuilder.Replace("ż", "z");
  96.                 stringBuilder.Remove(0, 1);
  97.                 stringBuilder.Remove(stringBuilder.ToString().Length - 1, 1);
  98.                 var listElement = "["
  99.                                   + stringBuilder
  100.                                   + "](#"
  101.                                   + stringBuilder
  102.                                       .ToString()
  103.                                       .ToLower()
  104.                                       .Replace(" ", "_")
  105.                                       .Trim()
  106.                                   + ")  \r\n";
  107.                 _markdownTOC += listElement;
  108.             }
  109.  
  110.             return _markdownTOC;
  111.         }
  112.  
  113.         public static string GenerateMarkdownNoNestedTOC()
  114.         {
  115.             _markdownSub = GenerateMarkdownTOC() + GenerateMarkdownIdentifiers();
  116.             return _markdownSub;
  117.         }
  118.     }
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement