public CompilerContext(SourceUnit sourceUnit, CompilerOptions options, ErrorSink errorSink, ParserSink parserSink) { Contract.RequiresNotNull(sourceUnit, "sourceUnit"); _sourceUnit = sourceUnit; _options = options ?? sourceUnit.Engine.GetDefaultCompilerOptions(); _errors = errorSink ?? sourceUnit.Engine.GetCompilerErrorSink(); _parserSink = parserSink ?? ParserSink.Null; }
public Dictionary <int, List <DataPoint> > Parse(Stream stream, int projectId, string fileName, string trace) { var sink = new ParserSink(); var responsible = (IParser)null; var candidates = new List <IParser> { new ArbinParser(), new MaccorParser(), new MaccorV2Parser(), new MaccorCsvParser(), new NewareParser(), new NewareV2Parser(), new LandParser() }; using (var reader = CreateReader(stream)) { var sheetIndex = 0; do { var sheetName = reader.Name; if (responsible == null) { foreach (var p in candidates) { if (p.OnSheetStart(sheetIndex, sheetName)) { Log.Info($"Parser for data file was found: {p.GetType().Name}"); responsible = p; responsible.Connect(sink); break; } } } else { responsible.OnSheetStart(sheetIndex, sheetName); } var rowIndex = 0; while (reader.Read()) { if (responsible == null) { foreach (var p in candidates) { if (p.OnDataRecord(rowIndex, reader)) { Log.Info($"CiExcelParser.Parse: Parser for data file was found: {p.GetType().Name}"); responsible = p; responsible.Connect(sink); break; } } } else { responsible.OnDataRecord(rowIndex, reader); } rowIndex += 1; } if (responsible == null) { foreach (var p in candidates) { if (p.OnSheetEnd(sheetIndex, sheetName)) { Log.Info($"CiExcelParser.Parse: Parser for data file was found: {p.GetType().Name}"); responsible = p; responsible.Connect(sink); break; } } } else { responsible.OnSheetEnd(sheetIndex, sheetName); } sheetIndex += 1; } while (reader.NextResult()); responsible?.OnDocumentEnd(); } if (responsible == null) { throw new FormatException($"CiExcelParser.Parse: Unknown file format File: {fileName}, projectId: {projectId}, trace: {trace}"); } return(sink.ChannelDictionary); }