Example #1
0
        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);
                        }
                    }
                }
            }
        }
Example #2
0
        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;
                    }
                }
        }
Example #3
0
        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);
        }
Example #4
0
        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);
            }
        }