Microsoft.R.Core.Utility.AstWriter.WriteNode C# (CSharp) Method

WriteNode() private method

private WriteNode ( IAstNode node ) : void
node IAstNode
return void
        private void WriteNode(IAstNode node) {
            Indent();

            string type = node.GetType().ToString();
            string name = type.Substring(type.LastIndexOf('.') + 1);

            _sb.Append(name);

            string innerType = node.ToString();

            innerType = innerType.Replace("\n", "\\n");
            innerType = innerType.Replace("\r", "\\r");

            int ms = innerType.IndexOf("Microsoft", StringComparison.Ordinal);
            if (ms >= 0) {
                innerType = innerType.Substring(type.LastIndexOf('.') + 1);
            }

            if (innerType != name) {
                _sb.Append("  [");
                _sb.Append(innerType);
                _sb.AppendLine("]");
            } else {
                _sb.AppendLine(string.Format(CultureInfo.InvariantCulture, "  [{0}...{1})", node.Start, node.End));
            }

            _indent++;

            foreach (IAstNode child in node.Children) {
                WriteNode(child);
            }

            if (node is CommaSeparatedList) {
                var csl = node as CommaSeparatedList;
                if (csl.Count > 0 && csl[csl.Count - 1] is StubArgument) {
                    WriteNode(csl[csl.Count - 1]);
                }
            }

            _indent--;
        }