public static new JSONString Parse(Token token) { StringBuilder builder = new StringBuilder(); token.MoveToContent(); if (!token.Peeks("\"")) { return null; } token.MovePast("\""); while (!token.Peeks("\"")) { if (token.Peeks("\\\"")) { builder.Append("\""); token.Skip(2); } else { builder.Append(token.Current); token.Skip(1); } } token.MovePast("\""); return new JSONString(builder.ToString()); }
// Methods public static new JSONNull Parse(Token token) { token.MoveToContent(); if (token.Peeks("null")) { token.Skip(4); return JSONValue.Null; } return null; }
public static new JSONBoolean Parse(Token token) { token.MoveToContent(); if (token.Peeks("true")) { token.Skip("true"); return new JSONBoolean(true); } if (token.Peeks("false")) { token.Skip("false"); return new JSONBoolean(false); } return null; }
public static new JSONNumber Parse(Token token) { token.MoveToContent(); if (_validChars.Contains<char>(token.Current)) { var builder = new StringBuilder(); while (_validChars.Contains<char>(token.Current)) { builder.Append(token.Current); token.Next(); } var value = builder.ToString(); return new JSONNumber(value, value.Contains('.')); } return null; }
public HtmlTag(Token token) { token.Next(); Name = token.ReadUntil(' ', '/', '>'); ReadAttributes(token); Attributes.Changed += OnAttributesChanged; _styles = new HtmlStyleCollection(); _styles.Changed += OnStylesChanged; UpdateStyles(); token.MoveToContent(); Closed = token.Peeks('/'); token.MovePast(">"); }
protected void ReadAttributes(Token token) { var done = false; while (!done) { token.MoveToContent(); if (token.Peeks("/>") || token.Peeks(">") || token.IsDone) done = true; else { string attributeName = token.ReadUntil(' ', '='); token.MovePast("="); token.MoveToContent(); string attributeValue; if (token.Current == '\'' || token.Current == '"') { char delimiter = token.Current; token.Next(); attributeValue = token.ReadUntil(delimiter); token.Next(); } else attributeValue = token.ReadUntil(' ', '/', '>'); _attributes[attributeName] = attributeValue; } } }