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>");
     }
 }
Example #3
0
        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();
        }
Example #4
0
        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();
        }
Example #5
0
 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);
     }
 }
Example #6
0
 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);
     }
 }
Example #7
0
 private HighlightingColor MakeHighlightingColor(SpanClass spanClass)
 {
   return new HighlightingColor
   {
     Foreground = new SimpleHighlightingBrush(ColorFromArgb(spanClass.Style.ForegroundColor))
   };
 }