mirror of
				https://github.com/Nioux/AideDeJeu.git
				synced 2025-10-31 07:26:09 +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; | ||||||
| using Markdig.Syntax.Inlines; | using Markdig.Syntax.Inlines; | ||||||
| using Markdig.Parsers; | using Markdig.Parsers; | ||||||
|  | using System.IO; | ||||||
|  | using Markdig.Renderers.Normalize; | ||||||
| 
 | 
 | ||||||
| namespace AideDeJeu.Tools | 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) |         public static string ToMarkdownString(this Markdig.Syntax.Inlines.ContainerInline inlines) | ||||||
|         { |         { | ||||||
|             var str = string.Empty; |             var str = string.Empty; | ||||||
|  | @ -31,11 +31,9 @@ namespace AideDeJeuLib | ||||||
|             while (enumerator.Current != null) |             while (enumerator.Current != null) | ||||||
|             { |             { | ||||||
|                 var block = enumerator.Current; |                 var block = enumerator.Current; | ||||||
|                 //DumpBlock(block); |                 if (block is HeadingBlock) | ||||||
|                 if (block is Markdig.Syntax.HeadingBlock) |  | ||||||
|                 { |                 { | ||||||
|                     var headingBlock = block as Markdig.Syntax.HeadingBlock; |                     var headingBlock = block as HeadingBlock; | ||||||
|                     //DumpHeadingBlock(headingBlock); |  | ||||||
|                     if (headingBlock.HeaderChar == '#' && (headingBlock.Level == 1 || headingBlock.Level == 2)) |                     if (headingBlock.HeaderChar == '#' && (headingBlock.Level == 1 || headingBlock.Level == 2)) | ||||||
|                     { |                     { | ||||||
|                         if (this.Name == null) |                         if (this.Name == null) | ||||||
|  | @ -44,43 +42,39 @@ namespace AideDeJeuLib | ||||||
|                         } |                         } | ||||||
|                         else |                         else | ||||||
|                         { |                         { | ||||||
|                             this.Text += new string(headingBlock.HeaderChar, headingBlock.Level) + " " + headingBlock.Inline.ToMarkdownString() + "\n\n"; |                             this.Text += block.ToMarkdownString(); | ||||||
|                         } |                         } | ||||||
|                     } |                     } | ||||||
|                     else |                     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()) |                     if (block.IsNewItem()) | ||||||
|                     { |                     { | ||||||
|                         return; |                         return; | ||||||
|                     } |                     } | ||||||
|                     var paragraphBlock = block as Markdig.Syntax.ParagraphBlock; |                     var paragraphBlock = block as ParagraphBlock; | ||||||
|                     this.Text += paragraphBlock.ToMarkdownString() + "\n"; |                     this.Text += paragraphBlock.ToMarkdownString() + "\n"; | ||||||
|                 } |                 } | ||||||
|                 if (block is Markdig.Syntax.ListBlock) |                 else if (block is ListBlock) | ||||||
|                 { |                 { | ||||||
|                     var listBlock = block as Markdig.Syntax.ListBlock; |                     var listBlock = block as ListBlock; | ||||||
|                     //DumpListBlock(listBlock); |  | ||||||
|                     if (listBlock.BulletType == '-') |                     if (listBlock.BulletType == '-') | ||||||
|                     { |                     { | ||||||
|                         foreach (var inblock in listBlock) |                         foreach (var inblock in listBlock) | ||||||
|                         { |                         { | ||||||
|                             //DumpBlock(inblock); |  | ||||||
|                             var regex = new Regex("(?<key>.*?): (?<value>.*)"); |                             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) |                                 foreach (var ininblock in listItemBlock) | ||||||
|                                 { |                                 { | ||||||
|                                     //DumpBlock(ininblock); |                                     if (ininblock is ParagraphBlock) | ||||||
|                                     if (ininblock is Markdig.Syntax.ParagraphBlock) |  | ||||||
|                                     { |                                     { | ||||||
|                                         var paragraphBlock = ininblock as Markdig.Syntax.ParagraphBlock; |                                         var paragraphBlock = ininblock as ParagraphBlock; | ||||||
|                                         //DumpParagraphBlock(paragraphBlock); |  | ||||||
|                                         var str = paragraphBlock.Inline.ToMarkdownString(); |                                         var str = paragraphBlock.Inline.ToMarkdownString(); | ||||||
| 
 | 
 | ||||||
|                                         var properties = new List<Tuple<string, Action<Generic, string>>>() |                                         var properties = new List<Tuple<string, Action<Generic, string>>>() | ||||||
|  | @ -104,59 +98,7 @@ namespace AideDeJeuLib | ||||||
|                     } |                     } | ||||||
|                     else |                     else | ||||||
|                     { |                     { | ||||||
|                         //var pipeline = new MarkdownPipelineBuilder().Build(); |                         this.Text += block.ToMarkdownString(); | ||||||
| 
 |  | ||||||
|                         //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"; |  | ||||||
|                                                     } |  | ||||||
|                                                 } |  | ||||||
|                                             } |  | ||||||
|                                         } |  | ||||||
|                                     } |  | ||||||
|                                 } |  | ||||||
|                             } |  | ||||||
|                         } |  | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
|                 else if (block is Markdig.Extensions.Tables.Table) |                 else if (block is Markdig.Extensions.Tables.Table) | ||||||
|  | @ -164,6 +106,10 @@ namespace AideDeJeuLib | ||||||
|                     var tableBlock = block as Markdig.Extensions.Tables.Table; |                     var tableBlock = block as Markdig.Extensions.Tables.Table; | ||||||
|                     this.Text += "\n\n" + tableBlock.ToMarkdownString() + "\n\n"; |                     this.Text += "\n\n" + tableBlock.ToMarkdownString() + "\n\n"; | ||||||
|                 } |                 } | ||||||
|  |                 else | ||||||
|  |                 { | ||||||
|  |                     this.Text += block.ToMarkdownString(); | ||||||
|  |                 } | ||||||
| 
 | 
 | ||||||
|                 enumerator.MoveNext(); |                 enumerator.MoveNext(); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Yan Maniez
						Yan Maniez