コード例 #1
0
        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);
        }
コード例 #2
0
        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());
            }
        }
コード例 #3
0
        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());
            }
        }
コード例 #4
0
        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());
        }
コード例 #5
0
        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));
            }
        }
コード例 #6
0
        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;
        }