/
krasninja
/
querycat
Обзор
Документация
Войти
/
krasninja
/
querycat
Код
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/QueryCat.Backend/Formatters/TextLineInput.cs
55 строк
2 KB
Ivan Kozhin
Allow to set up application culture
20 май 2024, 12:00
20 май 2024, 12:00
245e0ce
Код
Авторство
О чём код?
using QueryCat.Backend.Core; using QueryCat.Backend.Core.Data; using QueryCat.Backend.Core.Types; using QueryCat.Backend.Core.Utils; using QueryCat.Backend.Relational; using QueryCat.Backend.Relational.Iterators; using QueryCat.Backend.Storage; namespace QueryCat.Backend.Formatters; /// <summary> /// Text line input. /// </summary> internal sealed class TextLineInput : StreamRowsInput { private readonly Column[] _customColumns = { new("filename", DataType.String, "File path"), // Index 0. }; public TextLineInput(Stream stream, string? key = null) : base(new StreamReader(stream), new StreamRowsInputOptions { DelimiterStreamReaderOptions = new DelimiterStreamReader.ReaderOptions { DetectDelimiter = false, Culture = Application.Culture } }, key ?? string.Empty) { if (StreamReader.BaseStream is not FileStream) { _customColumns = []; } } /// <inheritdoc /> protected override void Analyze(CacheRowsIterator iterator) { RowsIteratorUtils.ResolveColumnsTypes(iterator); Columns[^1].Name = "text"; } /// <inheritdoc /> protected override Column[] GetVirtualColumns() => _customColumns; /// <inheritdoc /> protected override VariantValue GetVirtualColumnValue(int rowIndex, int columnIndex) { if (columnIndex == 0 && StreamReader.BaseStream is FileStream fileStream) { return new VariantValue(fileStream.Name); } return base.GetVirtualColumnValue(rowIndex, columnIndex); } }