mirror of
				https://github.com/Nioux/AideDeJeu.git
				synced 2025-10-30 23:16:09 +00:00 
			
		
		
		
	Expand markdown + corrections ids
This commit is contained in:
		
							parent
							
								
									de25474e35
								
							
						
					
					
						commit
						3164665221
					
				
					 16 changed files with 5125 additions and 5048 deletions
				
			
		|  | @ -1,4 +1,5 @@ | ||||||
| using AideDeJeu.Tools; | using AideDeJeu.Tools; | ||||||
|  | using AideDeJeu.ViewModels; | ||||||
| using iTextSharp.text; | using iTextSharp.text; | ||||||
| using iTextSharp.text.pdf; | using iTextSharp.text.pdf; | ||||||
| using Markdig; | using Markdig; | ||||||
|  | @ -10,6 +11,7 @@ using System.Diagnostics; | ||||||
| using System.IO; | using System.IO; | ||||||
| using System.Linq; | using System.Linq; | ||||||
| using System.Text; | using System.Text; | ||||||
|  | using System.Text.RegularExpressions; | ||||||
| using System.Threading.Tasks; | using System.Threading.Tasks; | ||||||
| using Xamarin.Forms; | using Xamarin.Forms; | ||||||
| 
 | 
 | ||||||
|  | @ -38,9 +40,6 @@ namespace AideDeJeu.Pdf | ||||||
| 
 | 
 | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         Document _Document = null; |  | ||||||
|         PdfWriter _Writer = null; |  | ||||||
| 
 |  | ||||||
|         public string BasePdfDirectory |         public string BasePdfDirectory | ||||||
|         { |         { | ||||||
|             get |             get | ||||||
|  | @ -49,23 +48,48 @@ namespace AideDeJeu.Pdf | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         public async Task<string> MarkdownToPDF(IEnumerable<AideDeJeuLib.Item> items) | ||||||
|  |         { | ||||||
|  |             return await MarkdownToPDF(items.Select(it => it.Markdown)); | ||||||
|  |         } | ||||||
|  |         public async Task MarkdownToPDF(IEnumerable<AideDeJeuLib.Item> items, Stream stream) | ||||||
|  |         { | ||||||
|  |             await MarkdownToPdf(items.Select(it => it.Markdown), stream); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         public async Task<string> MarkdownToPDF(IEnumerable<string> mds) |         public async Task<string> MarkdownToPDF(IEnumerable<string> mds) | ||||||
|         { |         { | ||||||
|             var basePath = BasePdfDirectory; |             var basePath = BasePdfDirectory; | ||||||
|             Directory.CreateDirectory(basePath); |             Directory.CreateDirectory(basePath); | ||||||
|             using (var stream = new FileStream(Path.Combine(BasePdfDirectory, "test.pdf"), FileMode.Create)) |             using (var stream = new FileStream(Path.Combine(BasePdfDirectory, "test.pdf"), FileMode.Create)) | ||||||
|             { |             { | ||||||
|                 MarkdownToPdf(mds, stream); |                 await MarkdownToPdf(mds, stream); | ||||||
|             } |             } | ||||||
|             return "test.pdf"; |             return "test.pdf"; | ||||||
|         } |         } | ||||||
|         public void MarkdownToPdf(IEnumerable<string> mds, Stream stream) | 
 | ||||||
|  |         public async Task<string> ExpandMarkdownAsync(string mdIn) | ||||||
|  |         { | ||||||
|  |             var store = DependencyService.Get<StoreViewModel>(); | ||||||
|  |             var regex = new Regex("\\n##* \\[.*?\\]\\((?<id>.*?)\\)"); | ||||||
|  |             var matches = regex.Matches(mdIn); | ||||||
|  |             var mdOut = mdIn; | ||||||
|  |             foreach (Match match in matches) | ||||||
|  |             { | ||||||
|  |                 var id = match.Groups["id"].Value; | ||||||
|  |                 var item = await store.GetItemFromDataAsync(id); | ||||||
|  |                 var mdReplace = await ExpandMarkdownAsync(item.Markdown); | ||||||
|  |                 mdOut = mdOut.Replace(match.Value, mdReplace); | ||||||
|  |             } | ||||||
|  |             return mdOut; | ||||||
|  |         } | ||||||
|  |         public async Task MarkdownToPdf(IEnumerable<string> mds, Stream stream) | ||||||
|         { |         { | ||||||
|             var pipeline = new Markdig.MarkdownPipelineBuilder().UseYamlFrontMatter().UsePipeTables().Build(); |             var pipeline = new Markdig.MarkdownPipelineBuilder().UseYamlFrontMatter().UsePipeTables().Build(); | ||||||
| 
 | 
 | ||||||
|             _Document = new Document(new iTextSharp.text.Rectangle(822, 1122)); |             var document = new Document(new iTextSharp.text.Rectangle(822, 1122)); | ||||||
|             _Writer = PdfWriter.GetInstance(_Document, stream); |             var writer = PdfWriter.GetInstance(document, stream); | ||||||
|             _Document.Open(); |             document.Open(); | ||||||
|             //PdfReader reader = null; |             //PdfReader reader = null; | ||||||
|             //reader = new PdfReader(AideDeJeu.Tools.Helpers.GetResourceStream("AideDeJeu.Pdf.poker_size.pdf")); |             //reader = new PdfReader(AideDeJeu.Tools.Helpers.GetResourceStream("AideDeJeu.Pdf.poker_size.pdf")); | ||||||
|             //PdfStamper stamper = null; |             //PdfStamper stamper = null; | ||||||
|  | @ -73,12 +97,13 @@ namespace AideDeJeu.Pdf | ||||||
| 
 | 
 | ||||||
|             foreach (var md in mds) |             foreach (var md in mds) | ||||||
|             { |             { | ||||||
|                 var parsed = Markdig.Markdown.Parse(md, pipeline); |                 var expandedMd = await ExpandMarkdownAsync(md); | ||||||
|                 Render(parsed.AsEnumerable(), _Document); |                 var parsed = Markdig.Markdown.Parse(expandedMd, pipeline); | ||||||
|  |                 Render(parsed.AsEnumerable(), document, writer); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             _Document.Close(); |             document.Close(); | ||||||
|             _Writer.Close(); |             writer.Close(); | ||||||
|             //stamper.Close(); |             //stamper.Close(); | ||||||
|             //reader.Close(); |             //reader.Close(); | ||||||
|         } |         } | ||||||
|  | @ -187,7 +212,7 @@ namespace AideDeJeu.Pdf | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         private void Render(IEnumerable<Block> blocks, Document document) |         private void Render(IEnumerable<Block> blocks, Document document, PdfWriter writer) | ||||||
|         { |         { | ||||||
|             //if(ParagraphFont == null) |             //if(ParagraphFont == null) | ||||||
|             //{ |             //{ | ||||||
|  | @ -219,7 +244,7 @@ namespace AideDeJeu.Pdf | ||||||
|             var phrases = Render(blocks); |             var phrases = Render(blocks); | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|             ColumnText ct = new ColumnText(_Writer.DirectContent); |             ColumnText ct = new ColumnText(writer.DirectContent); | ||||||
| 
 | 
 | ||||||
|             int column = 0; |             int column = 0; | ||||||
|             ct.SetSimpleColumn(10, 10 + 200 * column, 200, 200 + 200 * column); |             ct.SetSimpleColumn(10, 10 + 200 * column, 200, 200 + 200 * column); | ||||||
|  |  | ||||||
|  | @ -750,6 +750,24 @@ namespace AideDeJeu.ViewModels | ||||||
|             return new AideDeJeuContext(dbPath); |             return new AideDeJeuContext(dbPath); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         public async Task<Item> GetItemFromDataAsync(string id) | ||||||
|  |         { | ||||||
|  |             var regex = new Regex("/?(?<file>.*?)(_with_(?<with>.*))?\\.md(#(?<anchor>.*))?"); | ||||||
|  |             var match = regex.Match(id); | ||||||
|  |             var file = match.Groups["file"].Value; | ||||||
|  |             var anchor = match.Groups["anchor"].Value; | ||||||
|  |             var with = match.Groups["with"].Value; | ||||||
|  |             try | ||||||
|  |             { | ||||||
|  |                 var item = await Task.Run(async () => await Store.GetItemFromDataAsync(file, anchor)); | ||||||
|  |                 return item; | ||||||
|  |             } | ||||||
|  |             catch | ||||||
|  |             { | ||||||
|  | 
 | ||||||
|  |             } | ||||||
|  |             return null; | ||||||
|  |         } | ||||||
|         public async Task<Item> GetItemFromDataAsync(string source, string anchor) |         public async Task<Item> GetItemFromDataAsync(string source, string anchor) | ||||||
|         { |         { | ||||||
|             var id = $"{source}.md".TrimStart('/'); |             var id = $"{source}.md".TrimStart('/'); | ||||||
|  |  | ||||||
|  | @ -771,7 +771,7 @@ namespace AideDeJeuCmd | ||||||
|                 using (var stream = new FileStream("test.pdf", FileMode.Create)) |                 using (var stream = new FileStream("test.pdf", FileMode.Create)) | ||||||
|                 { |                 { | ||||||
|                     //pdfService.MarkdownToPdf("# mon titre\n\nhop", stream); |                     //pdfService.MarkdownToPdf("# mon titre\n\nhop", stream); | ||||||
|                     pdfService.MarkdownToPdf(spells.Select(s => s.Markdown).Take(3).ToList(), stream); |                     await pdfService.MarkdownToPdf(spells.Select(s => s.Markdown).Take(3).ToList(), stream); | ||||||
|                     //pdfService.MarkdownToPdf(new List<string>() { item.Markdown }, stream); |                     //pdfService.MarkdownToPdf(new List<string>() { item.Markdown }, stream); | ||||||
|                     //var stream = new MemoryStream(); |                     //var stream = new MemoryStream(); | ||||||
|                     //pce.GeneratePdfToStream(pc, stream); |                     //pce.GeneratePdfToStream(pc, stream); | ||||||
|  |  | ||||||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -20,7 +20,7 @@ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| #### [Les poisons](hd_poisons.md) | #### [Liste de poisons](hd_poisons_liste_de_poisons.md) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										23
									
								
								Data/HD/hd_poisons_liste_de_poisons.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								Data/HD/hd_poisons_liste_de_poisons.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,23 @@ | ||||||
|  | > [Les poisons](hd_poisons.md) | ||||||
|  | 
 | ||||||
|  | --- | ||||||
|  | 
 | ||||||
|  | #### Liste de poisons | ||||||
|  | 
 | ||||||
|  | |Objet|Type|Prix pour une dose| | ||||||
|  | |---|---|---| | ||||||
|  | |Sang d'assassin|ingestion|150 po| | ||||||
|  | |Fumées d'othur|inhalation|500 po| | ||||||
|  | |Mucus de rampant|contact|200 po| | ||||||
|  | |Poison drow|blessure|200 po| | ||||||
|  | |Essence éthérée|inhalation|300 po| | ||||||
|  | |Malice|inhalation|250 po| | ||||||
|  | |Larmes de minuit|ingestion|1 500 po| | ||||||
|  | |Huile de taggit|contact|400 po| | ||||||
|  | |Teinture pâle|ingestion|250 po| | ||||||
|  | |Poison de ver pourpre|blessure|2 000 po| | ||||||
|  | |Venin de serpent|blessure|200 po| | ||||||
|  | |Torpeur|ingestion|600 po| | ||||||
|  | |Sérum de vérité|ingestion|150 po| | ||||||
|  | |Poison de vouivre|blessure|1 200 po| | ||||||
|  | 
 | ||||||
|  | @ -8,9 +8,7 @@ | ||||||
| - AltName: Hunter (SRD p37) | - AltName: Hunter (SRD p37) | ||||||
| - Source: (MDR p198) | - Source: (MDR p198) | ||||||
| 
 | 
 | ||||||
| 
 | Adopter l'archétype du chasseur signifie accepter votre place comme rempart entre la civilisation et les terreurs qui hantent la nature. En suivant la voie du chasseur, vous apprenez des techniques spécifiques vous permettant d'affronter diverses menaces, que ce soient des ogres déchaînés, des hordes d'orcs, d'immenses géants ou de terrifiants dragons. | ||||||
| 
 |  | ||||||
| # [Chasseur](hd_ranger_hunter.md) |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -20,7 +20,7 @@ Certaines de ces lignées sont bien établies, mais la plupart du temps elles so | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| ## [Lignée draconique](hd_sorcerer_draconic.md) | ## [Lignées draconiques](hd_sorcerer_draconic_lignees_draconiques.md) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										19
									
								
								Data/HD/hd_sorcerer_draconic_lignees_draconiques.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								Data/HD/hd_sorcerer_draconic_lignees_draconiques.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | ||||||
|  | > [Lignée draconique](hd_sorcerer_draconic.md) | ||||||
|  | 
 | ||||||
|  | --- | ||||||
|  | 
 | ||||||
|  | ## Lignées draconiques | ||||||
|  | 
 | ||||||
|  | |Dragon|Type de dégâts| | ||||||
|  | |---|---| | ||||||
|  | |Airain|Feu| | ||||||
|  | |Argent|Froid| | ||||||
|  | |Blanc|Froid| | ||||||
|  | |Bleu|Foudre| | ||||||
|  | |Bronze|Foudre| | ||||||
|  | |Cuivre|Acide| | ||||||
|  | |Noir|Acide| | ||||||
|  | |Or|Feu| | ||||||
|  | |Rouge|Feu| | ||||||
|  | |Vert|Poison| | ||||||
|  | 
 | ||||||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								Data/library.db
									
										
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Data/library.db
									
										
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							|  | @ -22,7 +22,7 @@ | ||||||
| 
 | 
 | ||||||
| <!--GenericItem--> | <!--GenericItem--> | ||||||
| 
 | 
 | ||||||
| #### <!--Name-->Les poisons<!--/Name--> | #### <!--Name-->Liste de poisons<!--/Name--> | ||||||
| 
 | 
 | ||||||
| |Objet|Type|Prix pour <!--br-->une dose| | |Objet|Type|Prix pour <!--br-->une dose| | ||||||
| |---|---|---| | |---|---|---| | ||||||
|  |  | ||||||
|  | @ -10,14 +10,8 @@ | ||||||
| - AltName: <!--AltName-->Hunter (SRD p37)<!--/AltName--> | - AltName: <!--AltName-->Hunter (SRD p37)<!--/AltName--> | ||||||
| - Source: <!--Source-->(MDR p198)<!--/Source--> | - Source: <!--Source-->(MDR p198)<!--/Source--> | ||||||
| 
 | 
 | ||||||
| <!--GenericItem--> |  | ||||||
| 
 |  | ||||||
| # <!--Name-->Chasseur<!--/Name--> |  | ||||||
| 
 |  | ||||||
| Adopter l'archétype du chasseur signifie accepter votre place comme rempart entre la civilisation et les terreurs qui hantent la nature. En suivant la voie du chasseur, vous apprenez des techniques spécifiques vous permettant d'affronter diverses menaces, que ce soient des ogres déchaînés, des hordes d'orcs, d'immenses géants ou de terrifiants dragons. | Adopter l'archétype du chasseur signifie accepter votre place comme rempart entre la civilisation et les terreurs qui hantent la nature. En suivant la voie du chasseur, vous apprenez des techniques spécifiques vous permettant d'affronter diverses menaces, que ce soient des ogres déchaînés, des hordes d'orcs, d'immenses géants ou de terrifiants dragons. | ||||||
| 
 | 
 | ||||||
| <!--/GenericItem--> |  | ||||||
| 
 |  | ||||||
| <!--GenericItem--> | <!--GenericItem--> | ||||||
| 
 | 
 | ||||||
| ## <!--Name-->La proie du chasseur<!--/Name--> | ## <!--Name-->La proie du chasseur<!--/Name--> | ||||||
|  |  | ||||||
|  | @ -31,7 +31,7 @@ De plus, à chaque fois que vous faites un test de [Charisme] alors que vous int | ||||||
| 
 | 
 | ||||||
| <!--GenericItem--> | <!--GenericItem--> | ||||||
| 
 | 
 | ||||||
| ## <!--Name-->Lignée draconique<!--/Name--> | ## <!--Name-->Lignées draconiques<!--/Name--> | ||||||
| 
 | 
 | ||||||
| |Dragon|Type de dégâts| | |Dragon|Type de dégâts| | ||||||
| |---|---| | |---|---| | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Yan Maniez
						Yan Maniez