public void TestIndentation() { var Output = new IndentedStringBuilder(); Output.Write("{\n"); Output.Indent(() => { Output.Write("Hello World!\n"); Output.Write("Goodbye World!\n"); }); Output.Write("}\n"); Assert.AreEqual( @"{\n" + @" Hello World!\n" + @" Goodbye World!\n" + @"}\n", AstStringUtils.ToLiteralRaw(Output.ToString()) ); }
private static void SerializeAsXml(AstNode Node, IndentedStringBuilder Out, bool Spaces) { var NodeName = Node.GetType().Name; Out.Write("<" + NodeName); var Parameters = Node.Info; if (Parameters != null) { foreach (var Pair in Parameters) { Out.Write(String.Format(" {0}=\"{1}\"", Pair.Key, Pair.Value)); } } if (Node.Childs.Count() > 0) { Out.Write(">"); if (Spaces) Out.WriteNewLine(); if (Spaces) { Out.Indent(() => { foreach (var Child in Node.Childs) SerializeAsXml(Child, Out, Spaces); }); } else { foreach (var Child in Node.Childs) SerializeAsXml(Child, Out, Spaces); } Out.Write("</" + NodeName + ">"); if (Spaces) Out.WriteNewLine(); } else { Out.Write(" />"); if (Spaces) Out.WriteNewLine(); } }
public static string SerializeAsXml(AstNode Node, bool Spaces = true) { var Out = new IndentedStringBuilder(); SerializeAsXml(Node, Out, Spaces); return Out.ToString(); }