Exemplo n.º 1
0
        static void Rebuild(string text, FileInfo fileInfo)
        {
            var dsl       = text;
            var generator = new TemplatedGenerator
            {
                GenerateInterfaceForEntityWithModifiers = "?",
                TemplateForInterfaceName   = "public interface I{0}Aggregate",
                TemplateForInterfaceMember = "void When({0} c);",
                ClassNameTemplate          = @"[DataContract(Namespace = {1})]
public partial record {0}",
                MemberTemplate             = "[DataMember(Order = {0})] public {1} {2} {{ get; init; }}",
            };

            File.WriteAllText(Path.ChangeExtension(fileInfo.FullName, "cs"), GeneratorUtil.Build(dsl, generator));

            File.WriteAllText(
                Path.Combine(fileInfo.DirectoryName, "IsExternalInit.cs"),
                @"// Zie https://stackoverflow.com/a/64749403 voor uitleg waarom IsExternalInit noodzakelijk is.
#if NETFRAMEWORK || NETSTANDARD
namespace System.Runtime.CompilerServices
{
    internal static class IsExternalInit {}
}
#endif");
        }
Exemplo n.º 2
0
        public void Test()
        {
            var generator = new TemplatedGenerator()
                                 {
                                     Namespace = "Mine"
                                 };

            var dsl = @"

            let name = string Name;
            let security = SecurityDetails Security;
            let auth = SecurityRequest Request;

            entity ProjectAggregate (Guid ProjectId);
            using ? = CommandTo<ProjectId>;
            using ! = EventFrom<ProjectId>;

            // projects
            CreateProject? (name, int Rank, auth)
            ProjectCreated! (name, int Rank, security)

            RenameProject? (name, auth)
            ProjectRenamed! (name, security)

            DeleteProject? (auth)
            ProjectDeleted! (ref DeleteProject)

            entity null ();

            DoSomething (name)

            ";
            var ctx = GeneratorUtil.GenerateContext(dsl);
            Console.WriteLine(GeneratorUtil.Build(ctx, generator));
        }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            const string source = @"

            let id = Guid Id;

            Security			  (id, string path)

            let security = Security Security;

            let name = string Name;
            let rank = int Rank;
            let parent = Guid ParentId;

            DeleteContext	?(id)
            ContextDeleted	!(id)

            CreateContext	?(id, name, rank)
            ContextCreated	!(id, name, rank)";

            var generator = new TemplatedGenerator()
                {

                };
            Console.WriteLine(GeneratorUtil.Build(source, generator));

            Console.ReadLine();
        }
Exemplo n.º 4
0
 public static string Build(string source, TemplatedGenerator generator)
 {
     var builder = new StringBuilder();
     using (var stream = new StringWriter(builder))
     using (var writer = new IndentedTextWriter(stream, "    "))
     {
         generator.Generate(GenerateContext(source), writer);
     }
     return builder.ToString();
 }
Exemplo n.º 5
0
        public static string Build(string source, TemplatedGenerator generator)
        {
            var builder = new StringBuilder();

            using (var stream = new StringWriter(builder))
                using (var writer = new IndentedTextWriter(stream, "    "))
                {
                    generator.Generate(GenerateContext(source), writer);
                }
            return(builder.ToString());
        }
Exemplo n.º 6
0
        static void Rebuild(string text, string fullPath)
        {
            var dsl       = text;
            var generator = new TemplatedGenerator
            {
                GenerateInterfaceForEntityWithModifiers = "?",
                TemplateForInterfaceName   = "public interface I{0}Aggregate",
                TemplateForInterfaceMember = "void When({0} c);",
                ClassNameTemplate          = @"[DataContract(Namespace = {1})]
public partial class {0}",
                MemberTemplate             = "[DataMember(Order = {0})] public {1} {2} {{ get; private set; }}",
            };


            File.WriteAllText(Path.ChangeExtension(fullPath, "cs"), GeneratorUtil.Build(dsl, generator));
        }
Exemplo n.º 7
0
        static void Rebuild(string text, string fullPath)
        {
            var dsl = text;
            var generator = new TemplatedGenerator()
                {
                    GenerateInterfaceForEntityWithModifiers = "?",
                    TemplateForInterfaceName = "public interface I{0}Aggregate",
                    TemplateForInterfaceMember = "void When({0} c);",
                    ClassNameTemplate = @"

            [DataContract(Namespace = {1})]
            public partial class {0}",
                    MemberTemplate = "[DataMember(Order = {0})] public {1} {2} {{ get; private set; }}",

                };

            File.WriteAllText(Path.ChangeExtension(fullPath, "cs"), GeneratorUtil.Build(dsl, generator));
        }