mirror of
				https://github.com/Nioux/AideDeJeu.git
				synced 2025-10-31 15:36:07 +00:00 
			
		
		
		
	Renderer
This commit is contained in:
		
							parent
							
								
									99efb04f4b
								
							
						
					
					
						commit
						2f4a0f1f77
					
				
					 3 changed files with 35 additions and 71 deletions
				
			
		|  | @ -7,6 +7,8 @@ using AideDeJeuLib; | |||
| using Markdig.Syntax; | ||||
| using Markdig.Syntax.Inlines; | ||||
| using Markdig.Parsers; | ||||
| using System.IO; | ||||
| using Markdig.Renderers.Normalize; | ||||
| 
 | ||||
| namespace AideDeJeu.Tools | ||||
| { | ||||
|  | @ -82,6 +84,22 @@ namespace AideDeJeu.Tools | |||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         public static string ToMarkdownString(this Block block) | ||||
|         { | ||||
|             var pipeline = new MarkdownPipelineBuilder() | ||||
|                 .UsePipeTables() | ||||
|                 .Build(); | ||||
| 
 | ||||
|             using (var writer = new StringWriter()) | ||||
|             { | ||||
|                 var renderer = new NormalizeRenderer(writer); | ||||
|                 pipeline.Setup(renderer); | ||||
| 
 | ||||
|                 renderer.Render(block); | ||||
|                 return writer.ToString(); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public static string ToMarkdownString(this Markdig.Syntax.Inlines.ContainerInline inlines) | ||||
|         { | ||||
|             var str = string.Empty; | ||||
|  | @ -31,11 +31,9 @@ namespace AideDeJeuLib | |||
|             while (enumerator.Current != null) | ||||
|             { | ||||
|                 var block = enumerator.Current; | ||||
|                 //DumpBlock(block); | ||||
|                 if (block is Markdig.Syntax.HeadingBlock) | ||||
|                 if (block is HeadingBlock) | ||||
|                 { | ||||
|                     var headingBlock = block as Markdig.Syntax.HeadingBlock; | ||||
|                     //DumpHeadingBlock(headingBlock); | ||||
|                     var headingBlock = block as HeadingBlock; | ||||
|                     if (headingBlock.HeaderChar == '#' && (headingBlock.Level == 1 || headingBlock.Level == 2)) | ||||
|                     { | ||||
|                         if (this.Name == null) | ||||
|  | @ -44,43 +42,39 @@ namespace AideDeJeuLib | |||
|                         } | ||||
|                         else | ||||
|                         { | ||||
|                             this.Text += new string(headingBlock.HeaderChar, headingBlock.Level) + " " + headingBlock.Inline.ToMarkdownString() + "\n\n"; | ||||
|                             this.Text += block.ToMarkdownString(); | ||||
|                         } | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         this.Text += new string(headingBlock.HeaderChar, headingBlock.Level) + " " + headingBlock.Inline.ToMarkdownString() + "\n\n"; | ||||
|                         this.Text += block.ToMarkdownString(); | ||||
|                     } | ||||
|                 } | ||||
|                 if (block is Markdig.Syntax.ParagraphBlock) | ||||
|                 else if (block is ParagraphBlock) | ||||
|                 { | ||||
|                     if (block.IsNewItem()) | ||||
|                     { | ||||
|                         return; | ||||
|                     } | ||||
|                     var paragraphBlock = block as Markdig.Syntax.ParagraphBlock; | ||||
|                     var paragraphBlock = block as ParagraphBlock; | ||||
|                     this.Text += paragraphBlock.ToMarkdownString() + "\n"; | ||||
|                 } | ||||
|                 if (block is Markdig.Syntax.ListBlock) | ||||
|                 else if (block is ListBlock) | ||||
|                 { | ||||
|                     var listBlock = block as Markdig.Syntax.ListBlock; | ||||
|                     //DumpListBlock(listBlock); | ||||
|                     var listBlock = block as ListBlock; | ||||
|                     if (listBlock.BulletType == '-') | ||||
|                     { | ||||
|                         foreach (var inblock in listBlock) | ||||
|                         { | ||||
|                             //DumpBlock(inblock); | ||||
|                             var regex = new Regex("(?<key>.*?): (?<value>.*)"); | ||||
|                             if (inblock is Markdig.Syntax.ListItemBlock) | ||||
|                             if (inblock is ListItemBlock) | ||||
|                             { | ||||
|                                 var listItemBlock = inblock as Markdig.Syntax.ListItemBlock; | ||||
|                                 var listItemBlock = inblock as ListItemBlock; | ||||
|                                 foreach (var ininblock in listItemBlock) | ||||
|                                 { | ||||
|                                     //DumpBlock(ininblock); | ||||
|                                     if (ininblock is Markdig.Syntax.ParagraphBlock) | ||||
|                                     if (ininblock is ParagraphBlock) | ||||
|                                     { | ||||
|                                         var paragraphBlock = ininblock as Markdig.Syntax.ParagraphBlock; | ||||
|                                         //DumpParagraphBlock(paragraphBlock); | ||||
|                                         var paragraphBlock = ininblock as ParagraphBlock; | ||||
|                                         var str = paragraphBlock.Inline.ToMarkdownString(); | ||||
| 
 | ||||
|                                         var properties = new List<Tuple<string, Action<Generic, string>>>() | ||||
|  | @ -104,59 +98,7 @@ namespace AideDeJeuLib | |||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         //var pipeline = new MarkdownPipelineBuilder().Build(); | ||||
| 
 | ||||
|                         //var writer = new StringWriter(); | ||||
|                         //var renderer = new NormalizeRenderer(writer); | ||||
|                         //pipeline.Setup(renderer); | ||||
| 
 | ||||
|                         //renderer.Render(listBlock); | ||||
| 
 | ||||
|                         int index = 0; | ||||
|                         foreach (var inblock in listBlock) | ||||
|                         { | ||||
|                             index++; | ||||
|                             if (inblock is Markdig.Syntax.ListItemBlock) | ||||
|                             { | ||||
|                                 var listItemBlock = inblock as Markdig.Syntax.ListItemBlock; | ||||
|                                 foreach (var ininblock in listItemBlock) | ||||
|                                 { | ||||
|                                     //DumpBlock(ininblock); | ||||
|                                     if (ininblock is Markdig.Syntax.ParagraphBlock) | ||||
|                                     { | ||||
|                                         var paragraphBlock = ininblock as Markdig.Syntax.ParagraphBlock; | ||||
|                                         if (listBlock.IsOrdered) | ||||
|                                         { | ||||
|                                             this.Text += $"{index}. " + paragraphBlock.ToMarkdownString() + ""; | ||||
|                                         } | ||||
|                                         else | ||||
|                                         { | ||||
|                                             this.Text += listBlock.BulletType + " " + paragraphBlock.ToMarkdownString() + ""; | ||||
|                                         } | ||||
|                                     } | ||||
|                                     else if (ininblock is ListBlock) | ||||
|                                     { | ||||
|                                         var listBlock2 = ininblock as ListBlock; | ||||
|                                         foreach (var inblock2 in listBlock2) | ||||
|                                         { | ||||
|                                             if (inblock2 is Markdig.Syntax.ListItemBlock) | ||||
|                                             { | ||||
|                                                 var listItemBlock2 = inblock2 as Markdig.Syntax.ListItemBlock; | ||||
|                                                 foreach (var ininblock2 in listItemBlock2) | ||||
|                                                 { | ||||
|                                                     //DumpBlock(ininblock); | ||||
|                                                     if (ininblock2 is Markdig.Syntax.ParagraphBlock) | ||||
|                                                     { | ||||
|                                                         var paragraphBlock2 = ininblock2 as Markdig.Syntax.ParagraphBlock; | ||||
|                                                         this.Text += "  " + listBlock2.BulletType + " " + paragraphBlock2.ToMarkdownString() + "\n"; | ||||
|                                                     } | ||||
|                                                 } | ||||
|                                             } | ||||
|                                         } | ||||
|                                     } | ||||
|                                 } | ||||
|                             } | ||||
|                         } | ||||
|                         this.Text += block.ToMarkdownString(); | ||||
|                     } | ||||
|                 } | ||||
|                 else if (block is Markdig.Extensions.Tables.Table) | ||||
|  | @ -164,6 +106,10 @@ namespace AideDeJeuLib | |||
|                     var tableBlock = block as Markdig.Extensions.Tables.Table; | ||||
|                     this.Text += "\n\n" + tableBlock.ToMarkdownString() + "\n\n"; | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     this.Text += block.ToMarkdownString(); | ||||
|                 } | ||||
| 
 | ||||
|                 enumerator.MoveNext(); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Yan Maniez
						Yan Maniez