public void Assimilate(TSqlFormattingState partialState)
 {
     //TODO: find a way out of the cross-dependent wrapping maze...
     CurrentLineLength     = CurrentLineLength + partialState.CurrentLineLength;
     CurrentLineHasContent = CurrentLineHasContent || partialState.CurrentLineHasContent;
     _outBuilder.Append(partialState.DumpOutput());
 }
        public string FormatSQLTree(XmlDocument sqlTreeDoc)
        {
            //thread-safe - each call to FormatSQLTree() gets its own independent state object
            TSqlFormattingState state = new TSqlFormattingState(HTMLColoring, IndentString, SpacesPerTab, MaxLineWidth, 0);

            if (sqlTreeDoc.SelectSingleNode(string.Format("/{0}/@{1}[.=1]", SqlXmlConstants.ENAME_SQL_ROOT, SqlXmlConstants.ANAME_ERRORFOUND)) != null)
            {
                state.AddOutputContent(ErrorOutputPrefix);
            }

            XmlNodeList rootList = sqlTreeDoc.SelectNodes(string.Format("/{0}/*", SqlXmlConstants.ENAME_SQL_ROOT));

            ProcessSqlNodeList(rootList, state);
            WhiteSpace_BreakAsExpected(state);

            return(state.DumpOutput());
        }