v0.1 for XNA 3.1
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
using PlanB.Html.Utility;
|
||||
|
||||
namespace PlanB.Html.Nodes
|
||||
{
|
||||
@@ -180,7 +182,24 @@ namespace PlanB.Html.Nodes
|
||||
|
||||
public void AddStyle(KeyValuePair<string, string> style)
|
||||
{
|
||||
KeyValuePair<string, string> newStyle = new KeyValuePair<string,string>(style.Key.ToLower(), style.Value);
|
||||
string key = style.Key.ToLower();
|
||||
string value = style.Value;
|
||||
|
||||
if (key == "color")
|
||||
{
|
||||
Color color = ColorHelper.FromCss(value);
|
||||
|
||||
if (color.A == 0xff)
|
||||
{
|
||||
value = String.Format("rgb({0}, {1}, {2})", color.R, color.G, color.B);
|
||||
}
|
||||
else
|
||||
{
|
||||
value = String.Format("rgba({0}, {1}, {2}, {3})", color.R, color.G, color.B, color.A);
|
||||
}
|
||||
}
|
||||
|
||||
KeyValuePair<string, string> newStyle = new KeyValuePair<string, string>(key, value);
|
||||
|
||||
Styles.RemoveAll(i => i.Key == newStyle.Key);
|
||||
Styles.Add(newStyle);
|
||||
|
||||
@@ -103,6 +103,7 @@
|
||||
<Compile Include="Tokens\HtmlImgToken.cs" />
|
||||
<Compile Include="Tokens\HtmlTextToken.cs" />
|
||||
<Compile Include="Tokens\HtmlToken.cs" />
|
||||
<Compile Include="Utility\ColorHelper.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<NestedContentProject Include="Content\Content.contentproj">
|
||||
|
||||
@@ -8,8 +8,8 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyTitle("Plan B Html Parser")]
|
||||
[assembly: AssemblyProduct("Plan B Html Parser")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyCompany("Microsoft")]
|
||||
[assembly: AssemblyCopyright("Copyright © Microsoft 2009")]
|
||||
[assembly: AssemblyCompany("Plan B Game Studios Inc.")]
|
||||
[assembly: AssemblyCopyright("Copyright © Plan B Game Studios Inc. 2010")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
@@ -19,7 +19,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("b8545a1e-c024-4eec-9d5e-a3e470e43671")]
|
||||
[assembly: Guid("25b75844-05a1-4b9c-b054-a3835cbda08c")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
@@ -28,4 +28,4 @@ using System.Runtime.InteropServices;
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyVersion("0.1.0.0")]
|
||||
|
||||
@@ -0,0 +1,614 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using Microsoft.Xna.Framework;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
|
||||
namespace PlanB.Html.Utility
|
||||
{
|
||||
internal class ColorHelper
|
||||
{
|
||||
internal static Color FromHtml(string htmlColorString)
|
||||
{
|
||||
Regex htmlColorRegex = new Regex("^#(?<color>[0-9A-Fa-f]{6})(?<alpha>[0-9A-Fa-f]{2})?$");
|
||||
|
||||
Match match = htmlColorRegex.Match(htmlColorString);
|
||||
|
||||
if (match.Success)
|
||||
{
|
||||
string strColor = match.Groups["color"].Value;
|
||||
string strAlpha = match.Groups["alpha"].Value;
|
||||
|
||||
int red = int.Parse(strColor.Substring(0, 2), System.Globalization.NumberStyles.HexNumber);
|
||||
int green = int.Parse(strColor.Substring(2, 2), System.Globalization.NumberStyles.HexNumber);
|
||||
int blue = int.Parse(strColor.Substring(4, 2), System.Globalization.NumberStyles.HexNumber);
|
||||
int alpha = 255;
|
||||
if (!String.IsNullOrEmpty(strAlpha))
|
||||
{
|
||||
alpha = int.Parse(strAlpha, System.Globalization.NumberStyles.HexNumber);
|
||||
}
|
||||
|
||||
Vector4 v = new Vector4();
|
||||
v.W = alpha / 255.0f;
|
||||
v.X = red / 255.0f;
|
||||
v.Y = green / 255.0f;
|
||||
v.Z = blue / 255.0f;
|
||||
|
||||
return new Color(v);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
internal static Color FromCssName(string cssName)
|
||||
{
|
||||
cssName = cssName.ToLower();
|
||||
if (cssName == "aliceblue")
|
||||
{
|
||||
return FromHtml("#F0F8FF");
|
||||
}
|
||||
else if (cssName == "antiquewhite")
|
||||
{
|
||||
return FromHtml("#FAEBD7");
|
||||
}
|
||||
else if (cssName == "aqua")
|
||||
{
|
||||
return FromHtml("#00FFFF");
|
||||
}
|
||||
else if (cssName == "aquamarine")
|
||||
{
|
||||
return FromHtml("#7FFFD4");
|
||||
}
|
||||
else if (cssName == "azure")
|
||||
{
|
||||
return FromHtml("#F0FFFF");
|
||||
}
|
||||
else if (cssName == "beige")
|
||||
{
|
||||
return FromHtml("#F5F5DC");
|
||||
}
|
||||
else if (cssName == "bisque")
|
||||
{
|
||||
return FromHtml("#FFE4C4");
|
||||
}
|
||||
else if (cssName == "black")
|
||||
{
|
||||
return FromHtml("#000000");
|
||||
}
|
||||
else if (cssName == "blanchedalmond")
|
||||
{
|
||||
return FromHtml("#FFEBCD");
|
||||
}
|
||||
else if (cssName == "blue")
|
||||
{
|
||||
return FromHtml("#0000FF");
|
||||
}
|
||||
else if (cssName == "blueviolet")
|
||||
{
|
||||
return FromHtml("#8A2BE2");
|
||||
}
|
||||
else if (cssName == "brown")
|
||||
{
|
||||
return FromHtml("#A52A2A");
|
||||
}
|
||||
else if (cssName == "burlywood")
|
||||
{
|
||||
return FromHtml("#DEB887");
|
||||
}
|
||||
else if (cssName == "cadetblue")
|
||||
{
|
||||
return FromHtml("#5F9EA0");
|
||||
}
|
||||
else if (cssName == "chartreuse")
|
||||
{
|
||||
return FromHtml("#7FFF00");
|
||||
}
|
||||
else if (cssName == "chocolate")
|
||||
{
|
||||
return FromHtml("#D2691E");
|
||||
}
|
||||
else if (cssName == "coral")
|
||||
{
|
||||
return FromHtml("#FF7F50");
|
||||
}
|
||||
else if (cssName == "cornflowerblue")
|
||||
{
|
||||
return FromHtml("#6495ED");
|
||||
}
|
||||
else if (cssName == "cornsilk")
|
||||
{
|
||||
return FromHtml("#FFF8DC");
|
||||
}
|
||||
else if (cssName == "crimson")
|
||||
{
|
||||
return FromHtml("#DC143C");
|
||||
}
|
||||
else if (cssName == "cyan")
|
||||
{
|
||||
return FromHtml("#00FFFF");
|
||||
}
|
||||
else if (cssName == "darkblue")
|
||||
{
|
||||
return FromHtml("#00008B");
|
||||
}
|
||||
else if (cssName == "darkvyan")
|
||||
{
|
||||
return FromHtml("#008B8B");
|
||||
}
|
||||
else if (cssName == "darkgoldenrod")
|
||||
{
|
||||
return FromHtml("#B8860B");
|
||||
}
|
||||
else if (cssName == "darkgray")
|
||||
{
|
||||
return FromHtml("#A9A9A9");
|
||||
}
|
||||
else if (cssName == "darkgreen")
|
||||
{
|
||||
return FromHtml("#006400");
|
||||
}
|
||||
else if (cssName == "darkkhaki")
|
||||
{
|
||||
return FromHtml("#BDB76B");
|
||||
}
|
||||
else if (cssName == "darkmagenta")
|
||||
{
|
||||
return FromHtml("#8B008B");
|
||||
}
|
||||
else if (cssName == "darkolivegreen")
|
||||
{
|
||||
return FromHtml("#556B2F");
|
||||
}
|
||||
else if (cssName == "darkorange")
|
||||
{
|
||||
return FromHtml("#FF8C00");
|
||||
}
|
||||
else if (cssName == "darkorchid")
|
||||
{
|
||||
return FromHtml("#9932CC");
|
||||
}
|
||||
else if (cssName == "darkred")
|
||||
{
|
||||
return FromHtml("#8B0000");
|
||||
}
|
||||
else if (cssName == "darksalmon")
|
||||
{
|
||||
return FromHtml("#E9967A");
|
||||
}
|
||||
else if (cssName == "darkseagreen")
|
||||
{
|
||||
return FromHtml("#8FBC8F");
|
||||
}
|
||||
else if (cssName == "darkslateblue")
|
||||
{
|
||||
return FromHtml("#483D8B");
|
||||
}
|
||||
else if (cssName == "darkslategray")
|
||||
{
|
||||
return FromHtml("#2F4F4F");
|
||||
}
|
||||
else if (cssName == "darkturquoise")
|
||||
{
|
||||
return FromHtml("#00CED1");
|
||||
}
|
||||
else if (cssName == "darviolet")
|
||||
{
|
||||
return FromHtml("#9400D3");
|
||||
}
|
||||
else if (cssName == "deeppink")
|
||||
{
|
||||
return FromHtml("#FF1493");
|
||||
}
|
||||
else if (cssName == "deepskyblue")
|
||||
{
|
||||
return FromHtml("#00BFFF");
|
||||
}
|
||||
else if (cssName == "dimgray")
|
||||
{
|
||||
return FromHtml("#696969");
|
||||
}
|
||||
else if (cssName == "dodgerblue")
|
||||
{
|
||||
return FromHtml("#1E90FF");
|
||||
}
|
||||
else if (cssName == "firebrick")
|
||||
{
|
||||
return FromHtml("#B22222");
|
||||
}
|
||||
else if (cssName == "floralwhite")
|
||||
{
|
||||
return FromHtml("#FFFAF0");
|
||||
}
|
||||
else if (cssName == "forestgreen")
|
||||
{
|
||||
return FromHtml("#228B22");
|
||||
}
|
||||
else if (cssName == "fuchsia")
|
||||
{
|
||||
return FromHtml("#FF00FF");
|
||||
}
|
||||
else if (cssName == "gainsboro")
|
||||
{
|
||||
return FromHtml("#DCDCDC");
|
||||
}
|
||||
else if (cssName == "ghostwhite")
|
||||
{
|
||||
return FromHtml("#F8F8FF");
|
||||
}
|
||||
else if (cssName == "gold")
|
||||
{
|
||||
return FromHtml("#FFD700");
|
||||
}
|
||||
else if (cssName == "goldenrod")
|
||||
{
|
||||
return FromHtml("#DAA520");
|
||||
}
|
||||
else if (cssName == "gray")
|
||||
{
|
||||
return FromHtml("#808080");
|
||||
}
|
||||
else if (cssName == "green")
|
||||
{
|
||||
return FromHtml("#008000");
|
||||
}
|
||||
else if (cssName == "greenyellow")
|
||||
{
|
||||
return FromHtml("#ADFF2F");
|
||||
}
|
||||
else if (cssName == "honeydew")
|
||||
{
|
||||
return FromHtml("#F0FFF0");
|
||||
}
|
||||
else if (cssName == "hotpink")
|
||||
{
|
||||
return FromHtml("#FF69B4");
|
||||
}
|
||||
else if (cssName == "indianred") { return FromHtml("#CD5C5C"); }
|
||||
else if (cssName == "indigo") { return FromHtml("#4B0082"); }
|
||||
else if (cssName == "ivory")
|
||||
{
|
||||
return FromHtml("#FFFFF0");
|
||||
}
|
||||
else if (cssName == "khaki")
|
||||
{
|
||||
return FromHtml("#F0E68C");
|
||||
}
|
||||
else if (cssName == "lavender")
|
||||
{
|
||||
return FromHtml("#E6E6FA");
|
||||
}
|
||||
else if (cssName == "lavenderblush")
|
||||
{
|
||||
return FromHtml("#FFF0F5");
|
||||
}
|
||||
else if (cssName == "lawngreen")
|
||||
{
|
||||
return FromHtml("#7CFC00");
|
||||
}
|
||||
else if (cssName == "lemonchiffon")
|
||||
{
|
||||
return FromHtml("#FFFACD");
|
||||
}
|
||||
else if (cssName == "lightblue")
|
||||
{
|
||||
return FromHtml("#ADD8E6");
|
||||
}
|
||||
else if (cssName == "lightcoral")
|
||||
{
|
||||
return FromHtml("#F08080");
|
||||
}
|
||||
else if (cssName == "lightcyan")
|
||||
{
|
||||
return FromHtml("#E0FFFF");
|
||||
}
|
||||
else if (cssName == "lightgoldenrodyellow")
|
||||
{
|
||||
return FromHtml("#FAFAD2");
|
||||
}
|
||||
else if (cssName == "lightgrey")
|
||||
{
|
||||
return FromHtml("#D3D3D3");
|
||||
}
|
||||
else if (cssName == "lightgreen")
|
||||
{
|
||||
return FromHtml("#90EE90");
|
||||
}
|
||||
else if (cssName == "lightpink")
|
||||
{
|
||||
return FromHtml("#FFB6C1");
|
||||
}
|
||||
else if (cssName == "lightsalmon")
|
||||
{
|
||||
return FromHtml("#FFA07A");
|
||||
}
|
||||
else if (cssName == "lightseagreen")
|
||||
{
|
||||
return FromHtml("#20B2AA");
|
||||
}
|
||||
else if (cssName == "lightskyblue")
|
||||
{
|
||||
return FromHtml("#87CEFA");
|
||||
}
|
||||
else if (cssName == "lightslategray")
|
||||
{
|
||||
return FromHtml("#778899");
|
||||
}
|
||||
else if (cssName == "lightsteelblue")
|
||||
{
|
||||
return FromHtml("#B0C4DE");
|
||||
}
|
||||
else if (cssName == "lightyellow")
|
||||
{
|
||||
return FromHtml("#FFFFE0");
|
||||
}
|
||||
else if (cssName == "lime")
|
||||
{
|
||||
return FromHtml("#00FF00");
|
||||
}
|
||||
else if (cssName == "limegreen")
|
||||
{
|
||||
return FromHtml("#32CD32");
|
||||
}
|
||||
else if (cssName == "linen")
|
||||
{
|
||||
return FromHtml("#FAF0E6");
|
||||
}
|
||||
else if (cssName == "magenta")
|
||||
{
|
||||
return FromHtml("#FF00FF");
|
||||
}
|
||||
else if (cssName == "maroon")
|
||||
{
|
||||
return FromHtml("#800000");
|
||||
}
|
||||
else if (cssName == "mediumaquamarine")
|
||||
{
|
||||
return FromHtml("#66CDAA");
|
||||
}
|
||||
else if (cssName == "mediumblue")
|
||||
{
|
||||
return FromHtml("#0000CD");
|
||||
}
|
||||
else if (cssName == "mediumorchid")
|
||||
{
|
||||
return FromHtml("#BA55D3");
|
||||
}
|
||||
else if (cssName == "mediumpurple")
|
||||
{
|
||||
return FromHtml("#9370D8");
|
||||
}
|
||||
else if (cssName == "mediumseagreen")
|
||||
{
|
||||
return FromHtml("#3CB371");
|
||||
}
|
||||
else if (cssName == "mediumslateblue")
|
||||
{
|
||||
return FromHtml("#7B68EE");
|
||||
}
|
||||
else if (cssName == "mediumspringgreen")
|
||||
{
|
||||
return FromHtml("#00FA9A");
|
||||
}
|
||||
else if (cssName == "mediumturquoise")
|
||||
{
|
||||
return FromHtml("#48D1CC");
|
||||
}
|
||||
else if (cssName == "mediumvioletred")
|
||||
{
|
||||
return FromHtml("#C71585");
|
||||
}
|
||||
else if (cssName == "midnightblue")
|
||||
{
|
||||
return FromHtml("#191970");
|
||||
}
|
||||
else if (cssName == "mintcream")
|
||||
{
|
||||
return FromHtml("#F5FFFA");
|
||||
}
|
||||
else if (cssName == "mistyrose")
|
||||
{
|
||||
return FromHtml("#FFE4E1");
|
||||
}
|
||||
else if (cssName == "moccasin")
|
||||
{
|
||||
return FromHtml("#FFE4B5");
|
||||
}
|
||||
else if (cssName == "navajowhite")
|
||||
{
|
||||
return FromHtml("#FFDEAD");
|
||||
}
|
||||
else if (cssName == "navy")
|
||||
{
|
||||
return FromHtml("#000080");
|
||||
}
|
||||
else if (cssName == "oldlace")
|
||||
{
|
||||
return FromHtml("#FDF5E6");
|
||||
}
|
||||
else if (cssName == "olive")
|
||||
{
|
||||
return FromHtml("#808000");
|
||||
}
|
||||
else if (cssName == "olivedrab")
|
||||
{
|
||||
return FromHtml("#6B8E23");
|
||||
}
|
||||
else if (cssName == "orange")
|
||||
{
|
||||
return FromHtml("#FFA500");
|
||||
}
|
||||
else if (cssName == "orangered")
|
||||
{
|
||||
return FromHtml("#FF4500");
|
||||
}
|
||||
else if (cssName == "orchid")
|
||||
{
|
||||
return FromHtml("#DA70D6");
|
||||
}
|
||||
else if (cssName == "palegoldenrod")
|
||||
{
|
||||
return FromHtml("#EEE8AA");
|
||||
}
|
||||
else if (cssName == "palegreen")
|
||||
{
|
||||
return FromHtml("#98FB98");
|
||||
}
|
||||
else if (cssName == "paleturquoise")
|
||||
{
|
||||
return FromHtml("#AFEEEE");
|
||||
}
|
||||
else if (cssName == "palevioletred")
|
||||
{
|
||||
return FromHtml("#D87093");
|
||||
}
|
||||
else if (cssName == "papayawhip")
|
||||
{
|
||||
return FromHtml("#FFEFD5");
|
||||
}
|
||||
else if (cssName == "peachpuff")
|
||||
{
|
||||
return FromHtml("#FFDAB9");
|
||||
}
|
||||
else if (cssName == "peru")
|
||||
{
|
||||
return FromHtml("#CD853F");
|
||||
}
|
||||
else if (cssName == "pink")
|
||||
{
|
||||
return FromHtml("#FFC0CB");
|
||||
}
|
||||
else if (cssName == "plum")
|
||||
{
|
||||
return FromHtml("#DDA0DD");
|
||||
}
|
||||
else if (cssName == "powderblue")
|
||||
{
|
||||
return FromHtml("#B0E0E6");
|
||||
}
|
||||
else if (cssName == "purple")
|
||||
{
|
||||
return FromHtml("#800080");
|
||||
}
|
||||
else if (cssName == "red")
|
||||
{
|
||||
return FromHtml("#FF0000");
|
||||
}
|
||||
else if (cssName == "rosybrown")
|
||||
{
|
||||
return FromHtml("#BC8F8F");
|
||||
}
|
||||
else if (cssName == "royalblue")
|
||||
{
|
||||
return FromHtml("#4169E1");
|
||||
}
|
||||
else if (cssName == "saddlebrown")
|
||||
{
|
||||
return FromHtml("#8B4513");
|
||||
}
|
||||
else if (cssName == "salmon")
|
||||
{
|
||||
return FromHtml("#FA8072");
|
||||
}
|
||||
else if (cssName == "sandybrown")
|
||||
{
|
||||
return FromHtml("#F4A460");
|
||||
}
|
||||
else if (cssName == "seagreen")
|
||||
{
|
||||
return FromHtml("#2E8B57");
|
||||
}
|
||||
else if (cssName == "seashell")
|
||||
{
|
||||
return FromHtml("#FFF5EE");
|
||||
}
|
||||
else if (cssName == "sienna")
|
||||
{
|
||||
return FromHtml("#A0522D");
|
||||
}
|
||||
else if (cssName == "silver")
|
||||
{
|
||||
return FromHtml("#C0C0C0");
|
||||
}
|
||||
else if (cssName == "skyblue")
|
||||
{
|
||||
return FromHtml("#87CEEB");
|
||||
}
|
||||
else if (cssName == "slateblue")
|
||||
{
|
||||
return FromHtml("#6A5ACD");
|
||||
}
|
||||
else if (cssName == "slategray")
|
||||
{
|
||||
return FromHtml("#708090");
|
||||
}
|
||||
else if (cssName == "snow")
|
||||
{
|
||||
return FromHtml("#FFFAFA");
|
||||
}
|
||||
else if (cssName == "springgreen")
|
||||
{
|
||||
return FromHtml("#00FF7F");
|
||||
}
|
||||
else if (cssName == "steelblue")
|
||||
{
|
||||
return FromHtml("#4682B4");
|
||||
}
|
||||
else if (cssName == "tan")
|
||||
{
|
||||
return FromHtml("#D2B48C");
|
||||
}
|
||||
else if (cssName == "teal")
|
||||
{
|
||||
return FromHtml("#008080");
|
||||
}
|
||||
else if (cssName == "thistle")
|
||||
{
|
||||
return FromHtml("#D8BFD8");
|
||||
}
|
||||
else if (cssName == "tomato")
|
||||
{
|
||||
return FromHtml("#FF6347");
|
||||
}
|
||||
else if (cssName == "turquoise")
|
||||
{
|
||||
return FromHtml("#40E0D0");
|
||||
}
|
||||
else if (cssName == "violet")
|
||||
{
|
||||
return FromHtml("#EE82EE");
|
||||
}
|
||||
else if (cssName == "wheat")
|
||||
{
|
||||
return FromHtml("#F5DEB3");
|
||||
}
|
||||
else if (cssName == "white")
|
||||
{
|
||||
return FromHtml("#FFFFFF");
|
||||
}
|
||||
else if (cssName == "whitesmoke")
|
||||
{
|
||||
return FromHtml("#F5F5F5");
|
||||
}
|
||||
else if (cssName == "yellow")
|
||||
{
|
||||
return FromHtml("#FFFF00");
|
||||
}
|
||||
else if (cssName == "yellowgreen")
|
||||
{
|
||||
return FromHtml("#9ACD32");
|
||||
}
|
||||
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
internal static Color FromCss(string cssColor)
|
||||
{
|
||||
//TODO: Identify the different types of colors in css ie "rgb(0, 1, 2)", "black", "#FFEE00", their rbga varieties and any others I've missed.
|
||||
return FromCssName(cssColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -260,35 +260,30 @@ namespace TestProject1
|
||||
public void Test_Parse_SpanWithStyle()
|
||||
{
|
||||
String htmlText = "<span style=\"color:black\">asdf</span>";
|
||||
String expectedResult = "<span style=\"color:black;\">asdf</span>";
|
||||
String expectedResult = "<span style=\"color:rgb(0, 0, 0);\">asdf</span>";
|
||||
|
||||
HtmlNode htmlNode = Parser.Parse(htmlText);
|
||||
|
||||
Assert.IsNotNull(htmlNode, "The HtmlNode returned by the parser is null.");
|
||||
|
||||
Assert.AreEqual<int>(htmlNode.Children.Count, 1);
|
||||
|
||||
|
||||
Assert.IsInstanceOfType(htmlNode.Children[0], typeof(HtmlSpanNode));
|
||||
|
||||
HtmlSpanNode spanNode = htmlNode.Children[0] as HtmlSpanNode;
|
||||
|
||||
IEnumerable<KeyValuePair<string,string>> spanStyleAttributes = spanNode.Attributes.Where(i=>i.Key == "style");
|
||||
/*
|
||||
Assert.AreEqual<int>(spanStyleAttributes.Count(), 1);
|
||||
IEnumerable<KeyValuePair<string, string>> spanStyleAttributes = spanNode.Attributes.Where(i => i.Key == "style");
|
||||
|
||||
KeyValuePair<string, string> spanStyleAttribute = spanStyleAttributes.First();
|
||||
Assert.AreEqual<int>(spanStyleAttributes.Count(), 0);
|
||||
|
||||
Assert.AreEqual<string>(spanStyleAttribute.Value, "color:black");
|
||||
/**/
|
||||
|
||||
IEnumerable<KeyValuePair<string, string>> spanColorStyles = spanNode.Styles.Where(i => i.Key == "color");
|
||||
|
||||
Assert.AreEqual<int>(spanColorStyles.Count(), 1);
|
||||
|
||||
KeyValuePair<string, string> spanColorStyle = spanColorStyles.First();
|
||||
|
||||
//Assert.AreEqual<string>(spanColorStyle.Value, "rgb(0,0,0)");
|
||||
Assert.AreEqual<string>(spanColorStyle.Value, "black");
|
||||
Assert.AreEqual<string>("rgb(0, 0, 0)", spanColorStyle.Value);
|
||||
//Assert.AreEqual<string>(spanColorStyle.Value, "black");
|
||||
/**/
|
||||
|
||||
Assert.AreEqual(expectedResult, htmlNode.InnerHtml);
|
||||
|
||||
Reference in New Issue
Block a user