mirror of
				https://github.com/Nioux/AideDeJeu.git
				synced 2025-10-30 23:16:09 +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
	
	 Yan Maniez
						Yan Maniez