mirror of
https://github.com/Nioux/AideDeJeu.git
synced 2025-10-30 15:06:06 +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.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);
|
||||
|
|
|
|||
|
|
@ -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('/');
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -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)
|
||||
- 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.
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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-->
|
||||
|
||||
#### <!--Name-->Les poisons<!--/Name-->
|
||||
#### <!--Name-->Liste de poisons<!--/Name-->
|
||||
|
||||
|Objet|Type|Prix pour <!--br-->une dose|
|
||||
|---|---|---|
|
||||
|
|
|
|||
|
|
@ -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-->
|
||||
|
|
|
|||
|
|
@ -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|
|
||||
|---|---|
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue