示例#1
0
        static public void GenerateCode(string base_filename, Process <CSTextDocumentBuilder> process, GeneratedCodeType type)
        {
            CSTextDocument document = new CSTextDocument(new CSHeader_SimpleStatement());

            CSTextDocumentBuilder builder = document.CreateCSTextBuilder();
            CSTextDocumentWriter  writer  = builder.CreateWriterWithVariablePairs();

            writer.Write("using System;");
            writer.Write("using System.Collections;");
            writer.Write("using System.Collections.Generic;");

            writer.Write("using UnityEngine;");

            writer.Write("#if UNITY_EDITOR");
            writer.Write("using UnityEditor;");
            writer.Write("using Crunchy.SandwichBag;");
            writer.Write("#endif");

            writer.Write("using Crunchy.Dough;");
            writer.Write("using Crunchy.Salt;");
            writer.Write("using Crunchy.Noodle;");
            writer.Write("using Crunchy.Bread;");
            writer.Write("using Crunchy.Sandwich;");

            process(builder);

            if (document.RenderDocument().SaveChanges(type.GetDirectory(), base_filename + ".cs", true))
            {
                REGENERATION_COUNT++;
            }
        }
        private void GenerateStubClasses()
        {
            foreach (DOMEClass_Generated @class in this.GetDeepChildren <DOMEClass_Generated>())
            {
                CSTextDocument        document = new CSTextDocument();
                CSTextDocumentBuilder text     = document.CreateCSTextBuilder();
                CSTextDocumentWriter  code     = text.CreateWriterWithVariablePairs(
                    "NAMESPACE", settings.GetNamespaceName()
                    );

                code.Write("using System;");
                code.Write("using System.Collections;");
                code.Write("using System.Collections.Generic;");
                code.SkipLine();

                code.Write("using Crunchy.Dough;");
                code.Write("using Crunchy.Salt;");
                code.Write("using Crunchy.Noodle;");
                code.SkipLine();

                if (code.Write("namespace ?NAMESPACE", delegate() {
                    return(@class.GenerateStubClass(text));
                }))
                {
                    document.RenderDocument().SaveClass(settings.GetOutputDirectory(), @class.GetTypeName(), false);
                }
            }
        }
示例#3
0
    public void GenerateCode(string filename)
    {
        CSTextDocument document = new CSTextDocument(new CSHeader_SimpleDated("MMMM dd, yyyy"));

        CSTextDocumentBuilder builder = document.CreateCSTextBuilder();
        CSTextDocumentWriter  writer  = builder.CreateWriterWithVariablePairs();

        writer.Write("using System;");
        writer.Write("using System.Collections;");
        writer.Write("using System.Collections.Generic;");

        writer.Write("using Crunchy.Dough;");
        writer.Write("using Crunchy.Salt;");
        writer.Write("using Crunchy.Noodle;");
        writer.Write("using Crunchy.Bread;");
        writer.Write("using Crunchy.Sandwich;");

        GenerateSatelliteClass(builder);

        typeof(GamepadComponentType).GetEnumValues <GamepadComponentType>()
        .Process(t => GenerateInputDeviceIds(builder, t));

        GenerateClass(builder);

        document.RenderDocument().Save(filename, true);
    }
        private void GenerateMainFile()
        {
            CSTextDocument        document = new CSTextDocument();
            CSTextDocumentBuilder text     = document.CreateCSTextBuilder();
            CSTextDocumentWriter  code     = text.CreateWriterWithVariablePairs(
                "NAMESPACE", settings.GetNamespaceName()
                );

            code.Write("using System;");
            code.Write("using System.IO;");
            code.Write("using System.Collections;");
            code.Write("using System.Collections.Generic;");
            code.SkipLine();

            code.Write("using Crunchy.Dough;");
            code.Write("using Crunchy.Salt;");
            code.Write("using Crunchy.Noodle;");
            code.SkipLine();

            code.Write("using Antlr4.Runtime;");
            code.Write("using Antlr4.Runtime.Tree;");
            code.SkipLine();

            code.Write("namespace ?NAMESPACE", delegate() {
                this.GetDeepChildren <DOMEClass_Generated>().Process(g => g.GenerateMainClass(text));
            });

            document.RenderDocument().Save(settings.GetOutputDirectory(), GetMainFilename(), true);
        }