1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-10-30 06:56:10 +00:00

Expand markdown + corrections ids

This commit is contained in:
Yan Maniez 2019-07-12 11:48:41 +02:00
parent de25474e35
commit 3164665221
16 changed files with 5125 additions and 5048 deletions

View file

@ -1,4 +1,5 @@
using AideDeJeu.Tools;
using AideDeJeu.ViewModels;
using iTextSharp.text;
using iTextSharp.text.pdf;
using Markdig;
@ -10,6 +11,7 @@ using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Xamarin.Forms;
@ -38,9 +40,6 @@ namespace AideDeJeu.Pdf
}
Document _Document = null;
PdfWriter _Writer = null;
public string BasePdfDirectory
{
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)
{
var basePath = BasePdfDirectory;
Directory.CreateDirectory(basePath);
using (var stream = new FileStream(Path.Combine(BasePdfDirectory, "test.pdf"), FileMode.Create))
{
MarkdownToPdf(mds, stream);
await MarkdownToPdf(mds, stream);
}
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();
_Document = new Document(new iTextSharp.text.Rectangle(822, 1122));
_Writer = PdfWriter.GetInstance(_Document, stream);
_Document.Open();
var document = new Document(new iTextSharp.text.Rectangle(822, 1122));
var writer = PdfWriter.GetInstance(document, stream);
document.Open();
//PdfReader reader = null;
//reader = new PdfReader(AideDeJeu.Tools.Helpers.GetResourceStream("AideDeJeu.Pdf.poker_size.pdf"));
//PdfStamper stamper = null;
@ -73,12 +97,13 @@ namespace AideDeJeu.Pdf
foreach (var md in mds)
{
var parsed = Markdig.Markdown.Parse(md, pipeline);
Render(parsed.AsEnumerable(), _Document);
var expandedMd = await ExpandMarkdownAsync(md);
var parsed = Markdig.Markdown.Parse(expandedMd, pipeline);
Render(parsed.AsEnumerable(), document, writer);
}
_Document.Close();
_Writer.Close();
document.Close();
writer.Close();
//stamper.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)
//{
@ -219,7 +244,7 @@ namespace AideDeJeu.Pdf
var phrases = Render(blocks);
ColumnText ct = new ColumnText(_Writer.DirectContent);
ColumnText ct = new ColumnText(writer.DirectContent);
int column = 0;
ct.SetSimpleColumn(10, 10 + 200 * column, 200, 200 + 200 * column);

View file

@ -750,6 +750,24 @@ namespace AideDeJeu.ViewModels
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)
{
var id = $"{source}.md".TrimStart('/');

View file

@ -771,7 +771,7 @@ namespace AideDeJeuCmd
using (var stream = new FileStream("test.pdf", FileMode.Create))
{
//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);
//var stream = new MemoryStream();
//pce.GeneratePdfToStream(pc, stream);

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -20,7 +20,7 @@
#### [Les poisons](hd_poisons.md)
#### [Liste de poisons](hd_poisons_liste_de_poisons.md)

View 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|

View file

@ -8,9 +8,7 @@
- AltName: Hunter (SRD p37)
- Source: (MDR p198)
# [Chasseur](hd_ranger_hunter.md)
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.

View file

@ -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)

View 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

Binary file not shown.

View file

@ -22,7 +22,7 @@
<!--GenericItem-->
#### <!--Name-->Les poisons<!--/Name-->
#### <!--Name-->Liste de poisons<!--/Name-->
|Objet|Type|Prix pour <!--br-->une dose|
|---|---|---|

View file

@ -10,14 +10,8 @@
- AltName: <!--AltName-->Hunter (SRD p37)<!--/AltName-->
- 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.
<!--/GenericItem-->
<!--GenericItem-->
## <!--Name-->La proie du chasseur<!--/Name-->

View file

@ -31,7 +31,7 @@ De plus, à chaque fois que vous faites un test de [Charisme] alors que vous int
<!--GenericItem-->
## <!--Name-->Lignée draconique<!--/Name-->
## <!--Name-->Lignées draconiques<!--/Name-->
|Dragon|Type de dégâts|
|---|---|