public ColorString Append(ISupportColor other) { if (null == other) { return(this); } Append(other.ToColorString()); return(this); }
protected StringBuilder ObjectToMarkedUpString(object obj, ColorString formatString, StringBuilder sb) { if (null == sb) { sb = new StringBuilder(); } if (null == obj) { //return sb; return(sb.Append("$null")); } PSObject pso = obj as PSObject; if (null != pso) { // Check if there is a custom .ToString() method attached to this // PSObject. (which is used, for instance, for displaying enum values) var toStringMethods = Util.TryGetCustomToStringMethod(pso); if (null != toStringMethods) { // TODO: check overloads/signature? obj = toStringMethods.Invoke(); if (obj is string) { return(sb.Append((string)obj)); } else { LogManager.Trace("Interesting... a custom .ToString() method returned something besides a string."); } } else { obj = pso.BaseObject; } } ColorString cs = obj as ColorString; if (null != cs) { sb.Append(cs.ToString(DbgProvider.HostSupportsColor)); } else { ISupportColor isc = obj as ISupportColor; if (null != isc) { sb.Append(isc.ToColorString().ToString(DbgProvider.HostSupportsColor)); } else { string renderedFormatString = null; if (null != formatString) { renderedFormatString = formatString.ToString(DbgProvider.HostSupportsColor); } if (!String.IsNullOrEmpty(renderedFormatString)) { sb.Append(Util.CcSprintf(renderedFormatString, obj)); } else { // TODO: Or should it be pso.ToString here? sb.Append(obj.ToString()); } } } return(sb); } // end ObjectToMarkedUpString()
protected StringBuilder ObjectToMarkedUpString(object obj, ColorString formatString, StringBuilder sb) { if (null == sb) { sb = new StringBuilder(); } if (null == obj) { // We used to return sb.Append( "$null" ); however I'm changing to append // nothing in order to match the behavior of FormatSingleLineDirect (which // is what is applied to obj if there is no formatString, which yields an // empty string, so when we come through here, obj is an empty string, not // null). return(sb); } PSObject pso = obj as PSObject; if (null != pso) { // Check if there is a custom .ToString() method attached to this // PSObject. (which is used, for instance, for displaying enum values) var toStringMethods = Util.TryGetCustomToStringMethod(pso); if (null != toStringMethods) { // TODO: check overloads/signature? obj = toStringMethods.Invoke(); if (obj is string) { return(sb.Append((string)obj)); } else { LogManager.Trace("Interesting... a custom .ToString() method returned something besides a string."); } } else { obj = pso.BaseObject; } } ColorString cs = obj as ColorString; if (null != cs) { sb.Append(cs.ToString(DbgProvider.HostSupportsColor)); } else { ISupportColor isc = obj as ISupportColor; if (null != isc) { sb.Append(isc.ToColorString().ToString(DbgProvider.HostSupportsColor)); } else { string renderedFormatString = null; if (null != formatString) { renderedFormatString = formatString.ToString(DbgProvider.HostSupportsColor); } if (!String.IsNullOrEmpty(renderedFormatString)) { sb.Append(Util.CcSprintf(renderedFormatString, obj)); } else { // TODO: Or should it be pso.ToString here? sb.Append(obj.ToString()); } } } return(sb); } // end ObjectToMarkedUpString()