public HtmlPrettyPrintWriter(PrettyPrintOptions options, string missingNodeClass, string debugClass, string garbageClass) : base(options) { _buffer = new StringBuilder(); _writer = new StringWriter(_buffer); _missingNodeClass = new SpanClass(Language.Instance, missingNodeClass, missingNodeClass, null); _debugClass = new SpanClass(Language.Instance, debugClass, debugClass, null); _garbageClass = new SpanClass(Language.Instance, garbageClass, garbageClass, null); }
private void WriteSpan(SpanClass spanClass, string text) { if (spanClass != null) { _writer.Write("<span class=\""); WebUtility.HtmlEncode(spanClass.FullName.Replace('.', '-'), _writer); _writer.Write("\">"); } WebUtility.HtmlEncode(text, _writer); if (spanClass != null) { _writer.Write("</span>"); } }
public override void AmbiguousNode(IAmbiguousAst ast, SpanClass spanClass) { WriteSpan(_missingNodeClass, "<# ambiguous " + ast.RuleDescriptor.Name + ", " + ast.Ambiguities.Count + " options"); NewLineAndIndent(); var previousTokenPos = _previousTokenPos; foreach (var a in ast.Ambiguities) { _previousTokenPos = previousTokenPos; a.PrettyPrint(this, 0, spanClass); NewLine(); } Unindent(); WriteSpan(_missingNodeClass, "#>"); NewLine(); }
public override void AmbiguousNode <T>(IAmbiguousAst ast, string ruleType, IPrettyPrintSource source, SpanClass spanClass, Action <PrettyPrintWriter, IPrettyPrintSource, T, SpanClass> printer) { WriteSpan(_missingNodeClass, "<# ambiguous " + ruleType + ", " + ast.Ambiguities.Count + " options"); NewLineAndIndent(); var previousTokenPos = _previousTokenPos; foreach (object a in ast.Ambiguities) { _previousTokenPos = previousTokenPos; printer(this, source, (T)a, spanClass); NewLine(); } Unindent(); WriteSpan(_missingNodeClass, "#>"); NewLine(); }
protected override void FormatString(IPrettyPrintSource source, NSpan token, string text, SpanClass spanClass) { if (token.IsEmpty) { if ((Options & PrettyPrintOptions.MissingNodes) == PrettyPrintOptions.MissingNodes) { WriteSpan(_missingNodeClass, text); } } else { WebUtility.HtmlEncode(text, _writer); } }
protected override void FormatToken(IPrettyPrintSource source, NSpan token, bool canBeEmpty, string ruleName, SpanClass spanClass) { TryPrintGarbage(source, token); if (token.IsEmpty) { if (!canBeEmpty && (Options & PrettyPrintOptions.MissingNodes) == PrettyPrintOptions.MissingNodes) { WriteSpan(_missingNodeClass, ruleName); } } else { var text = source.Text.Substring(token.StartPos, token.Length); WebUtility.HtmlEncode(text, _writer); } }
private HighlightingColor MakeHighlightingColor(SpanClass spanClass) { return new HighlightingColor { Foreground = new SimpleHighlightingBrush(ColorFromArgb(spanClass.Style.ForegroundColor)) }; }