mirror of
https://github.com/Nioux/AideDeJeu.git
synced 2025-12-16 15:19:56 +00:00
Parsing
This commit is contained in:
parent
9222fcd9bf
commit
50a8a6876a
1 changed files with 72 additions and 20 deletions
|
|
@ -447,7 +447,7 @@ namespace AideDeJeuCmd
|
||||||
var divStyle = txtDiv.GetAttributeValue("style", "");
|
var divStyle = txtDiv.GetAttributeValue("style", "");
|
||||||
var parsedSpan = new ParsedSpan()
|
var parsedSpan = new ParsedSpan()
|
||||||
{
|
{
|
||||||
Text = span.InnerText,
|
Text = span.InnerText.Replace(" ",""),
|
||||||
Style = spanStyle,
|
Style = spanStyle,
|
||||||
IdStyle = spanIdStyle,
|
IdStyle = spanIdStyle,
|
||||||
DivStyle = divStyle,
|
DivStyle = divStyle,
|
||||||
|
|
@ -502,6 +502,46 @@ namespace AideDeJeuCmd
|
||||||
|
|
||||||
bool started = false;
|
bool started = false;
|
||||||
|
|
||||||
|
public string MDStyle(string text, string style)
|
||||||
|
{
|
||||||
|
text = text.Trim();
|
||||||
|
if (style.Contains("italic"))
|
||||||
|
{
|
||||||
|
text = $"_{text}_";
|
||||||
|
}
|
||||||
|
if (style.Contains("bold"))
|
||||||
|
{
|
||||||
|
text = $"**{text}**";
|
||||||
|
}
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<KeyValuePair<string, string>> MDSizes = new List<KeyValuePair<string, string>>()
|
||||||
|
{
|
||||||
|
new KeyValuePair<string, string>("Petite/Très Grande", "P/TG"),
|
||||||
|
new KeyValuePair<string, string>("Très Petite", "TP"),
|
||||||
|
new KeyValuePair<string, string>("Très Grande", "TG"),
|
||||||
|
new KeyValuePair<string, string>("Grande", "G"),
|
||||||
|
new KeyValuePair<string, string>("Moyenne", "M"),
|
||||||
|
new KeyValuePair<string, string>("Gigantesque", "Gig"),
|
||||||
|
//new KeyValuePair<string, string>("Moyenne (métamorphe)", "M"),
|
||||||
|
//new KeyValuePair<string, string>("Très Petite taille ", "TP"),
|
||||||
|
new KeyValuePair<string, string>("Petite", "P"),
|
||||||
|
//new KeyValuePair<string, string>("Petite taille (cynome)", "P"),
|
||||||
|
//new KeyValuePair<string, string>("Grande taille d’élémentaires de taille Minuscule", "G"),
|
||||||
|
};
|
||||||
|
|
||||||
|
string ToMDSize(string size)
|
||||||
|
{
|
||||||
|
foreach(var mdsize in MDSizes)
|
||||||
|
{
|
||||||
|
if(size.Contains(mdsize.Key))
|
||||||
|
{
|
||||||
|
return mdsize.Value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return size;
|
||||||
|
}
|
||||||
public void OutputMarkdown(FullText fullText, TextWriter output, TextWriter error)
|
public void OutputMarkdown(FullText fullText, TextWriter output, TextWriter error)
|
||||||
{
|
{
|
||||||
var page = fullText.Where(l => l.FirstOrDefault().Style.Contains(st16_255))?.FirstOrDefault()?.FirstOrDefault()?.Text;
|
var page = fullText.Where(l => l.FirstOrDefault().Style.Contains(st16_255))?.FirstOrDefault()?.FirstOrDefault()?.Text;
|
||||||
|
|
@ -515,31 +555,32 @@ namespace AideDeJeuCmd
|
||||||
string value = "";
|
string value = "";
|
||||||
if (line.Count > 1)
|
if (line.Count > 1)
|
||||||
{
|
{
|
||||||
value = line.Skip(1).Select(p => p.Text).Aggregate((p1, p2) => p1.Trim() + " " + p2.Trim());
|
value = line.Skip(1).Select(p => MDStyle(p.Text, p.Style)).Aggregate((p1, p2) => p1.Trim() + " " + p2.Trim());
|
||||||
}
|
}
|
||||||
|
string text = MDStyle(keySpan.Text, keySpan.Style);
|
||||||
Console.ForegroundColor = ConsoleColor.DarkGray;
|
Console.ForegroundColor = ConsoleColor.DarkGray;
|
||||||
error.Write($"{keySpan.Text}");
|
error.Write($"{text}");
|
||||||
error.WriteLine($" {value}");
|
error.WriteLine($" {value}");
|
||||||
|
|
||||||
if (keySpan.Style.Contains(st48_0) && keySpan.IdStyle.Contains(idsnn))
|
if (keySpan.Style.Contains(st48_0) && keySpan.IdStyle.Contains(idsnn))
|
||||||
{ // titre de page
|
{ // titre de page
|
||||||
Console.ForegroundColor = ConsoleColor.Blue;
|
Console.ForegroundColor = ConsoleColor.Blue;
|
||||||
error.Write($"{keySpan.Text} {value}\n");
|
error.Write($"{text} {value}\n");
|
||||||
}
|
}
|
||||||
else if (keySpan.Style.Contains(st9_203) && keySpan.IdStyle.Contains(idssnn))
|
else if (keySpan.Style.Contains(st9_203) && keySpan.IdStyle.Contains(idssnn))
|
||||||
{ // bloodmark
|
{ // bloodmark
|
||||||
Console.ForegroundColor = ConsoleColor.Blue;
|
Console.ForegroundColor = ConsoleColor.Blue;
|
||||||
error.Write($"{keySpan.Text} {value}\n");
|
error.Write($"{text} {value}\n");
|
||||||
}
|
}
|
||||||
else if (keySpan.Style.Contains(st16_255) && keySpan.IdStyle.Contains(idsbn))
|
else if (keySpan.Style.Contains(st16_255) && keySpan.IdStyle.Contains(idsbn))
|
||||||
{ // page
|
{ // page
|
||||||
Console.ForegroundColor = ConsoleColor.Blue;
|
Console.ForegroundColor = ConsoleColor.Blue;
|
||||||
error.Write($"{keySpan.Text} {value}\n");
|
error.Write($"{text} {value}\n");
|
||||||
}
|
}
|
||||||
else if (keySpan.Style.Contains(st8_0) && keySpan.IdStyle.Contains(idsnn))
|
else if (keySpan.Style.Contains(st8_0) && keySpan.IdStyle.Contains(idsnn))
|
||||||
{ // encadré
|
{ // encadré
|
||||||
Console.ForegroundColor = ConsoleColor.Blue;
|
Console.ForegroundColor = ConsoleColor.Blue;
|
||||||
error.Write($"{keySpan.Text} {value}\n");
|
error.Write($"{text} {value}\n");
|
||||||
}
|
}
|
||||||
else if (keySpan.Style.Contains(st11_255) && keySpan.IdStyle.Contains(idssnn))
|
else if (keySpan.Style.Contains(st11_255) && keySpan.IdStyle.Contains(idssnn))
|
||||||
{ // nom
|
{ // nom
|
||||||
|
|
@ -555,23 +596,34 @@ namespace AideDeJeuCmd
|
||||||
output.Write("\n<!--/MonsterItem-->\n\n");
|
output.Write("\n<!--/MonsterItem-->\n\n");
|
||||||
}
|
}
|
||||||
output.Write("<!--MonsterItem Family=\"TomeOfBeasts\"-->\n\n");
|
output.Write("<!--MonsterItem Family=\"TomeOfBeasts\"-->\n\n");
|
||||||
output.Write($"# <!--Name-->{CultureInfo.CurrentCulture.TextInfo.ToTitleCase(keySpan.Text.ToLower())}<!--/Name-->\n\n- Source: <!--Source-->(LDM p{page})<!--/Source-->\n");
|
output.Write($"# <!--Name-->{CultureInfo.CurrentCulture.TextInfo.ToTitleCase(text.ToLower())}<!--/Name-->\n\n- Source: <!--Source-->(LDM p{page})<!--/Source-->\n");
|
||||||
}
|
}
|
||||||
else if (keySpan.Style.Contains(st8_0) && keySpan.IdStyle.Contains(idssni) && keySpan.Text.Contains("taille"))
|
else if (keySpan.Style.Contains(st8_0) && keySpan.IdStyle.Contains(idssni) && text.Contains("taille"))
|
||||||
{ // type / size / alignment
|
{ // type / size / alignment
|
||||||
// todo : découper type / size / alignment
|
// todo : découper type / size / alignment
|
||||||
|
var regex = new Regex("^(?<type>.*?) de (taille )?(?<size>.*?)( taille)?, (?<alignment>.*?)$");
|
||||||
|
var match = regex.Match(text);
|
||||||
|
var type = match.Groups["type"].Value;
|
||||||
|
var size = match.Groups["size"].Value;
|
||||||
|
var alignment = match.Groups["alignment"].Value;
|
||||||
|
if (type.Length > 0)
|
||||||
|
{
|
||||||
|
text = text.Replace(type, $"<!--Type-->{type}<!--/Type-->");
|
||||||
|
text = text.Replace(",", $" (<!--Size-->{ToMDSize(size)}<!--/Size-->),");
|
||||||
|
text = text.Replace(alignment, $"<!--Alignment-->{alignment}<!--/Alignment-->");
|
||||||
|
}
|
||||||
Console.ForegroundColor = ConsoleColor.White;
|
Console.ForegroundColor = ConsoleColor.White;
|
||||||
output.Write($"- <!--Type-->{keySpan.Text}<!--/Alignment-->\n");
|
output.Write($"- {text}\n");
|
||||||
}
|
}
|
||||||
else if (keySpan.Style.Contains(st8_121) && keySpan.IdStyle.Contains(idssbn))
|
else if (keySpan.Style.Contains(st8_121) && keySpan.IdStyle.Contains(idssbn))
|
||||||
{ // key / ...
|
{ // key / ...
|
||||||
string tag = "";
|
string tag = "";
|
||||||
if (KeyTags.ContainsKey(keySpan.Text.Trim()))
|
if (KeyTags.ContainsKey(text.Trim()))
|
||||||
{
|
{
|
||||||
tag = KeyTags[keySpan.Text.Trim()];
|
tag = KeyTags[text.Trim()];
|
||||||
|
|
||||||
Console.ForegroundColor = ConsoleColor.White;
|
Console.ForegroundColor = ConsoleColor.White;
|
||||||
output.Write($"- **{keySpan.Text.Trim()}** <!--{tag}-->{value}<!--/{tag}-->\n");
|
output.Write($"- **{text.Trim()}** <!--{tag}-->{value}<!--/{tag}-->\n");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -587,7 +639,7 @@ namespace AideDeJeuCmd
|
||||||
{ // ... / value
|
{ // ... / value
|
||||||
if (abilities != null)
|
if (abilities != null)
|
||||||
{
|
{
|
||||||
abilities += keySpan.Text;
|
abilities += text;
|
||||||
if (abilities.Count(c => c == '(') == 6)
|
if (abilities.Count(c => c == '(') == 6)
|
||||||
{
|
{
|
||||||
Console.ForegroundColor = ConsoleColor.White;
|
Console.ForegroundColor = ConsoleColor.White;
|
||||||
|
|
@ -598,33 +650,33 @@ namespace AideDeJeuCmd
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Console.ForegroundColor = ConsoleColor.White;
|
Console.ForegroundColor = ConsoleColor.White;
|
||||||
output.Write($"{keySpan.Text} {value}\n");
|
output.Write($"{text} {value}\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (keySpan.Style.Contains(st14_137) && keySpan.IdStyle.Contains(idsnn))
|
else if (keySpan.Style.Contains(st14_137) && keySpan.IdStyle.Contains(idsnn))
|
||||||
{ // actions / réactions
|
{ // actions / réactions
|
||||||
Console.ForegroundColor = ConsoleColor.White;
|
Console.ForegroundColor = ConsoleColor.White;
|
||||||
output.Write($"\n## {keySpan.Text}\n{value}\n");
|
output.Write($"\n## {text}\n{value}\n");
|
||||||
}
|
}
|
||||||
else if (keySpan.Style.Contains(st8_0) && keySpan.IdStyle.Contains(idssnn))
|
else if (keySpan.Style.Contains(st8_0) && keySpan.IdStyle.Contains(idssnn))
|
||||||
{
|
{
|
||||||
Console.ForegroundColor = ConsoleColor.White;
|
Console.ForegroundColor = ConsoleColor.White;
|
||||||
output.Write($"{keySpan.Text.Trim()} {value}\n");
|
output.Write($"{text.Trim()} {value}\n");
|
||||||
}
|
}
|
||||||
else if (keySpan.Style.Contains(st8_0) && keySpan.IdStyle.Contains(idssbi))
|
else if (keySpan.Style.Contains(st8_0) && keySpan.IdStyle.Contains(idssbi))
|
||||||
{
|
{
|
||||||
Console.ForegroundColor = ConsoleColor.White;
|
Console.ForegroundColor = ConsoleColor.White;
|
||||||
output.Write($"\n**_{keySpan.Text.Trim()}_** {value}\n");
|
output.Write($"\n**_{text.Trim()}_** {value}\n");
|
||||||
}
|
}
|
||||||
else if (keySpan.Style.Contains(st8_0) && keySpan.IdStyle.Contains(idssbn))
|
else if (keySpan.Style.Contains(st8_0) && keySpan.IdStyle.Contains(idssbn))
|
||||||
{
|
{
|
||||||
Console.ForegroundColor = ConsoleColor.White;
|
Console.ForegroundColor = ConsoleColor.White;
|
||||||
output.Write($"\n**{keySpan.Text.Trim()}** {value}\n");
|
output.Write($"\n**{text.Trim()}** {value}\n");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Console.ForegroundColor = ConsoleColor.Red;
|
Console.ForegroundColor = ConsoleColor.Red;
|
||||||
error.Write($"{keySpan.Text} {value}\n");
|
error.Write($"{text} {value}\n");
|
||||||
error.Write($"{keySpan.Style}\n");
|
error.Write($"{keySpan.Style}\n");
|
||||||
error.Write($"{keySpan.IdStyle}\n");
|
error.Write($"{keySpan.IdStyle}\n");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue