static string Render(Term t) { StringBuilder txt = new StringBuilder(); // leave off seperator if (t.Type == TermType.Function) { txt.AppendFormat("<span class=\"value_function function\">{0}</span>", Render(t.Function)); } else if (t.Type == TermType.Url) { txt.AppendFormat("<span class=\"value_url\">url('{0}')</span>", t.Value); } else if (t.Type == TermType.Unicode) { txt.AppendFormat("<span class=\"value_unicode\">U\\{0}</span>", t.Value.ToUpper()); } else if (t.Type == TermType.Hex) { txt.AppendFormat("<span class=\"value_hex{1}\">{0}</span>", t.Value.ToUpper(), t.IsColor ? " value_color" : ""); } else { if (t.Type == TermType.Number) { txt.Append("<span class=\"value_number\">"); } else { txt.AppendFormat("<span class=\"value_string{0}\">", t.IsColor ? " value_color" : ""); } if (t.Sign.HasValue) { txt.AppendFormat("<span class=\"values_sign\">{0}</span>", t.Sign.Value); } txt.Append(t.Value); if (t.Unit.HasValue) { txt.Append("<span class=\"values_unit\">"); if (t.Unit.Value == JinxBot.Controls.CSS.Unit.Percent) { txt.Append("%"); } else { txt.Append(UnitOutput.ToString(t.Unit.Value)); } txt.Append("</span>"); } txt.Append("</span>"); } return(txt.ToString()); }
/// <summary></summary> /// <returns></returns> public override string ToString() { /* * term<out Term trm> = (. trm = new Term(); * string val = ""; * Function func = null; * .) * [ ('-' (. trm.Sign = '-'; .) | '+' (. trm.Sign = '+'; .) | ) ] | ( | { digit (. val += t.val; .) | } | [ ( | "%" (. trm.Unit = Unit.Percent; .) | "ex" (. trm.Unit = Unit.EX; .) | "em" (. trm.Unit = Unit.EM; .) | "px" (. trm.Unit = Unit.PX; .) | "cm" (. trm.Unit = Unit.CM; .) | "mm" (. trm.Unit = Unit.MM; .) | "pc" (. trm.Unit = Unit.PC; .) | "in" (. trm.Unit = Unit.IN; .) | "pt" (. trm.Unit = Unit.PT; .) | "deg" (. trm.Unit = Unit.DEG; .) | ["g" (. trm.Unit = Unit.GRAD; .) | ] "rad" (. if (trm.Unit != Unit.GRAD) { trm.Unit = Unit.RAD; } .) | ["m" (. trm.Unit = Unit.MS; .) | ] "s" (. if (trm.Unit != Unit.MS) { trm.Unit = Unit.S; } .) | ["k" (. trm.Unit = Unit.KHZ; .) | ] "hz" (. if (trm.Unit != Unit.KHZ) { trm.Unit = Unit.HZ; } .) | ) ] (. trm.Value = val; trm.Type = TermType.Number; .) | | function<out func> (. trm.Function = func; trm.Type = TermType.Function; .) | | QuotedString<out val> (. trm.Value = val; trm.Type = TermType.String; .) | | ident (. trm.Value = t.val; trm.Type = TermType.String; .) | | URI<out val> (. trm.Value = val; trm.Type = TermType.Url; .) | | "U\\" | { (digit|'A'|'B'|'C'|'D'|'E'|'F'|'a'|'b'|'c'|'d'|'e'|'f') | (. val += t.val; .) | } (. trm.Value = val; trm.Type = TermType.Unicode; .) | | hexdigit (. trm.Value = t.val; trm.Type = TermType.Hex; .) | ) | . */ System.Text.StringBuilder txt = new System.Text.StringBuilder(); if (seperator.HasValue) { txt.Append(seperator.Value); txt.Append(" "); } if (type == TermType.Function) { txt.Append(function.ToString()); } else if (type == TermType.Url) { txt.AppendFormat("url('{0}')", val); } else if (type == TermType.Unicode) { txt.AppendFormat("U\\{0}", val.ToUpper(CultureInfo.InvariantCulture)); } else if (type == TermType.Hex) { txt.Append(val.ToUpper(CultureInfo.InvariantCulture)); } else { if (sign.HasValue) { txt.Append(sign.Value); } txt.Append(val); if (unit.HasValue) { if (unit.Value == JinxBot.Controls.CSS.Unit.Percent) { txt.Append("%"); } else { txt.Append(UnitOutput.ToString(unit.Value)); } } } return(txt.ToString()); }