public void Compile() { Utility.PreparePath(OutFolder); foreach (var compileToken in _token) { CodeUnitBuilder codeUnitBuilder = new CodeUnitBuilder(compileToken); Save(codeUnitBuilder); } }
private void Save(CodeUnitBuilder creator) { const int lineCount = 3; using MemoryStream stream = new MemoryStream(); StreamWriter sourceWriter = new StreamWriter(stream); var unit = creator.CompileUnit; _provider.GenerateCodeFromCompileUnit(unit, sourceWriter, _options); sourceWriter.Flush(); stream.Seek(0, SeekOrigin.Begin); int count = 0; string outDir = Path.Combine(OutFolder, OutSuffix); string path = Path.Combine(OutFolder, OutSuffix, creator.OutFileName); if (!Directory.Exists(outDir)) { Directory.CreateDirectory(outDir); } StreamReader reader = new StreamReader(stream); using (StreamWriter fileWriter = new StreamWriter(path)) { while (true) { string line = reader.ReadLine(); if (line != null) { if (count == lineCount) { int post = line.LastIndexOf('.'); if (post != -1) { line = line.Substring(0, post); Console.WriteLine(line); } } else { line = line.Replace(CodeUnitBuilder.PropertySignReplace, CodeUnitBuilder.PropertySign); } fileWriter.WriteLine(line); } else { break; } count++; } } }