protected NodeOutput OutputNode(int indentLevel, AstNode node, bool startWithNewLine = false) { var result = new NodeOutput(); var stringWriter = new System.IO.StringWriter(); var formatter = new TextWriterOutputFormatter(stringWriter); formatter.Indentation = indentLevel; stringWriter.NewLine = Context.EolMarker; if (startWithNewLine) { formatter.NewLine(); } var visitor = new CSharpOutputVisitor(formatter, Context.FormattingOptions); visitor.OutputStarted += (sender, e) => { result.NodeSegments [e.AstNode] = new NodeOutput.Segment(stringWriter.GetStringBuilder().Length); }; visitor.OutputFinished += (sender, e) => { result.NodeSegments [e.AstNode].EndOffset = stringWriter.GetStringBuilder().Length; }; node.AcceptVisitor(visitor, null); result.Text = stringWriter.ToString().TrimEnd(); if (node is FieldDeclaration) { result.Text += Context.EolMarker; } return(result); }
static string OutputNode(MonoDevelop.Ide.Gui.Document doc, AstNode node) { using (var stringWriter = new System.IO.StringWriter()) { // formatter.Indentation = indentLevel; var formatter = new TextWriterOutputFormatter(stringWriter); stringWriter.NewLine = doc.Editor.EolMarker; var visitor = new CSharpOutputVisitor(formatter, doc.GetFormattingOptions()); node.AcceptVisitor(visitor); return(stringWriter.ToString()); } }
public string OutputNode(AstNode node) { using (var stringWriter = new System.IO.StringWriter()) { var formatter = new TextWriterOutputFormatter(stringWriter); // formatter.Indentation = indentLevel; stringWriter.NewLine = Document.Editor.EolMarker; var visitor = new CSharpOutputVisitor(formatter, FormattingOptionsFactory.CreateMono()); node.AcceptVisitor(visitor); return(stringWriter.ToString()); } }
public string OutputNode(ProjectDom dom, AstNode node, string indent) { StringWriter w = new StringWriter(); var policyParent = dom != null && dom.Project != null ? dom.Project.Policies : null; IEnumerable <string> types = DesktopService.GetMimeTypeInheritanceChain(CSharpFormatter.MimeType); CSharpFormattingPolicy codePolicy = policyParent != null?policyParent.Get <CSharpFormattingPolicy> (types) : MonoDevelop.Projects.Policies.PolicyService.GetDefaultPolicy <CSharpFormattingPolicy> (types); var formatter = new TextWriterOutputFormatter(w); int col = GetColumn(indent, 0, 4); formatter.Indentation = System.Math.Max(0, col / 4); OutputVisitor visitor = new OutputVisitor(formatter, codePolicy.CreateOptions()); node.AcceptVisitor(visitor, null); return(w.ToString()); }
void AppendReturnType(StringBuilder result, CodeGenerationOptions options, IType type) { if (type == null) { throw new ArgumentNullException("type"); } var implementingType = options.Part; var loc = implementingType.Region.End; var pf = implementingType.ParsedFile; var file = pf as CSharpParsedFile; var resolved = type; if (resolved.Kind == TypeKind.Unknown) { result.Append(type.FullName); return; } var def = type.GetDefinition(); if (def != null) { using (var stringWriter = new System.IO.StringWriter()) { var formatter = new TextWriterOutputFormatter(stringWriter); stringWriter.NewLine = EolMarker; var visitor = new CSharpOutputVisitor(formatter, FormattingOptionsFactory.CreateMono()); var shortType = CreateShortType(def.Compilation, file, loc, resolved); shortType.AcceptVisitor(visitor); var typeString = stringWriter.ToString(); if (typeString.StartsWith("global::")) { typeString = typeString.Substring("global::".Length); } result.Append(typeString); } } else { result.Append(new ICSharpCode.NRefactory.CSharp.CSharpAmbience().ConvertType(type)); } }
protected NodeOutput OutputNode(int indentLevel, AstNode node, bool startWithNewLine = false) { var result = new NodeOutput (); var stringWriter = new System.IO.StringWriter (); var formatter = new TextWriterOutputFormatter (stringWriter); formatter.Indentation = indentLevel; stringWriter.NewLine = Context.EolMarker; if (startWithNewLine) formatter.NewLine (); var visitor = new CSharpOutputVisitor (formatter, Context.FormattingOptions); visitor.OutputStarted += (sender, e) => { result.NodeSegments [e.AstNode] = new NodeOutput.Segment (stringWriter.GetStringBuilder ().Length); }; visitor.OutputFinished += (sender, e) => { result.NodeSegments [e.AstNode].EndOffset = stringWriter.GetStringBuilder ().Length; }; node.AcceptVisitor (visitor, null); result.Text = stringWriter.ToString ().TrimEnd (); if (node is FieldDeclaration) result.Text += Context.EolMarker; return result; }