public DataTable Format(string text, IFormatOptions formatOptions, ITableOptions tableOptions) { if (string.IsNullOrWhiteSpace(text)) { return(new DataTable()); } ITableDetector detector = this.ConstructDetector(text, formatOptions); return(this.Process(detector, tableOptions ?? TableOptions.Default)); }
private ITableDetector ConstructDetector(string text, IFormatOptions formatOptions) { if (formatOptions.CSVParsing) { return(new CSVDetector(text, formatOptions)); } if (formatOptions != null && formatOptions.ColumnSizes != null && formatOptions.ColumnSizes.Count <int>() > 0) { return(new FixedColumnsDetector(text, formatOptions ?? FormatOptions.Default)); } return(new SeparatorBasedDetector(text, formatOptions ?? FormatOptions.Default)); }
protected override Task <DataTable> ExecuteAsyncWithResult(AsyncCodeActivityContext context, CancellationToken cancellationToken) { IEnumerable <KeyValuePair <Rectangle, string> > positions = this.Positions.Get(context); string input = this.InputString.Get(context); ITableOptions tableOptions = this.GetTableOptions(); IFormatOptions formatOptions = this.GetFormatOptions(context); return(Task.Factory.StartNew <DataTable>(delegate { TableFormatter tableFormatter = new TableFormatter(); if (positions == null) { return tableFormatter.Format(input, formatOptions, tableOptions); } return tableFormatter.Format(positions, tableOptions); })); }
private static IFormatOptions ValidateFormatOptions(IFormatOptions formatOptions) { IFormatOptions result; if (formatOptions != null) { result = new FormatOptions { ColumnSeparators = string.IsNullOrEmpty(formatOptions.ColumnSeparators) ? FormatOptions.Default.ColumnSeparators : formatOptions.ColumnSeparators, NewLineSeparator = string.IsNullOrEmpty(formatOptions.NewLineSeparator) ? FormatOptions.Default.NewLineSeparator : formatOptions.NewLineSeparator, ColumnSizes = formatOptions.ColumnSizes, PreserveNewLines = formatOptions.PreserveNewLines, PreserveStrings = formatOptions.PreserveStrings }; } else { result = FormatOptions.Default; } return(result); }
// Methods public CSVDetector(string input, IFormatOptions format) { this._input = input ?? string.Empty; this._format = format ?? FormatOptions.Default; }
internal SeparatorBasedDetector(string text, IFormatOptions formatOptions) { this._text = text; this._formatOptions = SeparatorBasedDetector.ValidateFormatOptions(formatOptions); this._trimmingChars = this._formatOptions.ColumnSeparators.ToCharArray(); }
// Methods internal FixedColumnsDetector(string text, IFormatOptions formatOptions) { this._text = text; this._formatOptions = formatOptions; }