private static IEnumerable<string> FormatCol(PropertyColumnFormat pcf, object item, 
     int width, int tabLength, int firstLineHangingIndent)
 {
     var rawValue = pcf.Property.GetValue(item);
     var value = ValueFormatter.Format(pcf.Format, rawValue);
     return FormatColWithPreFormattedValue(pcf, value, width, tabLength, firstLineHangingIndent);
 }
 public void AddColumn(PropertyColumnFormat format, IEnumerable<FormattingIntermediate> values)
 {
     var newItem = new StackPropertyInfo
     {
         Column = format,
         Values = values.ToList()
     };
     _columns.Insert(0, newItem);
 }
        private static void ProduceColumnsUsingProperties(Type type, bool includeAllColumns, bool formatValid,
            IEnumerator<ColumnFormat> formatEnumerator, List<PropertyColumnFormat> output)
        {
            foreach (var prop in type.GetProperties())
            {
                PropertyColumnFormat matchedFormat = null;
                if (formatValid)
                {
                    if (formatEnumerator.Current != null)
                        matchedFormat = new PropertyColumnFormat(prop, formatEnumerator.Current);
                    formatValid = formatEnumerator.MoveNext();
                }

                if (matchedFormat == null)
                {
                    if (!includeAllColumns) break;
                    matchedFormat = new PropertyColumnFormat(prop,
                        new ColumnFormat(PropertyNameConverter.ToHeading(prop), ConvertPropertyType(prop.PropertyType)));
                }

                output.Add(matchedFormat);
            }
        }
 private static IEnumerable<string> FormatColWithPreFormattedValue(PropertyColumnFormat pcf, string preFormattedValue, 
     int width, int tabLength, int firstLineHangingIndent)
 {
     return PropertyStackFormatter.Format(pcf.Format, preFormattedValue, width, tabLength, firstLineHangingIndent);
 }
 private static string[] WrapValue(int tabLength, PropertyColumnFormat pcf, object value)
 {
     var formatted = ValueFormatter.Format(pcf.Format, value);
     return ColumnWrapper.WrapValue(formatted, pcf.Format, pcf.Format.ActualWidth, tabLength);
 }