public static void Run <T>(Resource resource, IErrorReporter reporter, ICodeGeneratorEnv environment) where T : ICodeGenerator, new() { using (var reader = resource.CreateTextReader()) { var reporterWrapper = new ReporterWrapper(reporter); var generator = new T(); generator.Load(reader, reporterWrapper, environment); if (!reporterWrapper.HasError) { using (TextWriter writer = new StringWriter()) { generator.Write(writer); } foreach (var file in generator.AdditionalFiles) { using (Stream stream = new MemoryStream()) { file.GenerateFileContent(stream); } } } } }
public static void Run <T>(ResourceSet set, IErrorReporter reporter, ICodeGeneratorEnv environment) where T : ICodeGenerator, new() { using (var writer = new StringWriter()) using (var reader = set.Config.CreateTextReader()) { ICodeGenerator generator = new T(); generator.Load(reader, reporter, environment); generator.Write(writer); var files = new List <IAdditionalFile>(generator.AdditionalFiles); Assert.That(files.Count, Is.EqualTo(set.AdditionalFiles.Count)); var prefxLen = set.Config.ResourceName.LastIndexOf('.'); for (var i = 0; i < set.AdditionalFiles.Count; i++) { var res = set.AdditionalFiles[i]; var suffix = res.ResourceName.Substring(prefxLen); Constraint constraint; if (res.IsBinary) { constraint = new FileBinaryConstraint(suffix, res); } else { constraint = new FileTextConstraint(suffix, res); } Assert.That(files[i], constraint, "File: {0}", set.AdditionalFiles[i].ResourceName); } var actual = writer.ToString(); var expected = set.Code.ReadString(); try { Assert.That(writer.ToString(), Is.EqualTo(expected)); } catch { Trace.WriteLine(actual); throw; } } }
public bool Load(TextReader reader, IErrorReporter reporter, ICodeGeneratorEnv environment) { var wrapper = new ReporterWrapper(reporter); _loadStart = null; _parseDone = null; _calculationDone = null; _tableDone = null; _loadStart = DateTime.Now; var parser = new ConfigParser(wrapper); var config = parser.Parse(new ConfigScanner(reader.ReadToEnd())); _parseDone = DateTime.Now; if (wrapper.HasError) { _config = null; return(false); } SyntaxTreeDecorator.Decorate(config, wrapper); _calculationDone = DateTime.Now; if (wrapper.HasError) { _config = null; return(false); } _data = TableGenerator.GenerateTables(config); _tableDone = DateTime.Now; if (!config.Manager.SuppressTableEmbedding) { config.TableResourceName = environment.GetResourceName(ParserTableFile.Suffix); } _config = config; return(true); }
public bool Load(TextReader reader, IErrorReporter reporter, ICodeGeneratorEnv environment) { var wrapper = new ReporterWrapper(reporter); _loadStart = null; _parseDone = null; _calculationDone = null; _writeStart = null; _writeDone = null; _loadStart = DateTime.Now; var parser = new ConfigParser(wrapper); var config = parser.Parse(new ConfigScanner(reader.ReadToEnd())); _parseDone = DateTime.Now; if (wrapper.HasError) { return(false); } config.TableResourceNameFormat = environment.GetResourceName(".{0}.table"); SyntaxTreeDecorator.Decorate(config, wrapper); _calculationDone = DateTime.Now; if (wrapper.HasError) { _config = null; return(false); } else { _config = config; return(true); } }