diff --git a/YesNt-Interpreter.sln b/YesNt-Interpreter.sln index b2c2492..8e36ce1 100644 --- a/YesNt-Interpreter.sln +++ b/YesNt-Interpreter.sln @@ -14,6 +14,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YesNt.Interpreter.Tests", "YesNt.Interpreter.Tests\YesNt.Interpreter.Tests.csproj", "{2F95DCA7-3E43-4F2E-8FB2-067F0EC962B1}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YesNt.Interpreter.App", "YesNt.Interpreter.App\YesNt.Interpreter.App.csproj", "{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YesNt.Interpreter.Generator", "YesNt.Interpreter.Generator\YesNt.Interpreter.Generator.csproj", "{85AAB233-9C4D-4B42-8117-00010958DD1D}" EndProject Global @@ -62,6 +64,18 @@ Global {2F95DCA7-3E43-4F2E-8FB2-067F0EC962B1}.Release|x64.Build.0 = Release|x64 {2F95DCA7-3E43-4F2E-8FB2-067F0EC962B1}.Release|x86.ActiveCfg = Release|Any CPU {2F95DCA7-3E43-4F2E-8FB2-067F0EC962B1}.Release|x86.Build.0 = Release|Any CPU + {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Debug|x64.ActiveCfg = Debug|x64 + {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Debug|x64.Build.0 = Debug|x64 + {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Debug|x86.ActiveCfg = Debug|Any CPU + {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Debug|x86.Build.0 = Debug|Any CPU + {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Release|Any CPU.Build.0 = Release|Any CPU + {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Release|x64.ActiveCfg = Release|x64 + {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Release|x64.Build.0 = Release|x64 + {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Release|x86.ActiveCfg = Release|Any CPU + {A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Release|x86.Build.0 = Release|Any CPU {85AAB233-9C4D-4B42-8117-00010958DD1D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {85AAB233-9C4D-4B42-8117-00010958DD1D}.Debug|Any CPU.Build.0 = Debug|Any CPU {85AAB233-9C4D-4B42-8117-00010958DD1D}.Debug|x64.ActiveCfg = Debug|Any CPU diff --git a/YesNt.Interpreter.App/Program.cs b/YesNt.Interpreter.App/Program.cs new file mode 100644 index 0000000..61311f7 --- /dev/null +++ b/YesNt.Interpreter.App/Program.cs @@ -0,0 +1,14 @@ +using System; + +using YesNt.Interpreter.Runtime; + +if (args.Length == 1) +{ + YesNtInterpreter interpreter = new YesNtInterpreter(); + interpreter.Initialize(); + interpreter.Execute(args[0]); +} +else +{ + Console.WriteLine("No path specified!"); +} diff --git a/YesNt.Interpreter.App/YesNt.Interpreter.App.csproj b/YesNt.Interpreter.App/YesNt.Interpreter.App.csproj new file mode 100644 index 0000000..018aab7 --- /dev/null +++ b/YesNt.Interpreter.App/YesNt.Interpreter.App.csproj @@ -0,0 +1,13 @@ + + + + net8.0 + Exe + AnyCPU;x64 + + + + + + + diff --git a/YesNt.Interpreter/Attributes/StatementAttribute.cs b/YesNt.Interpreter/Attributes/StatementAttribute.cs index 999c9e8..b2aabf4 100644 --- a/YesNt.Interpreter/Attributes/StatementAttribute.cs +++ b/YesNt.Interpreter/Attributes/StatementAttribute.cs @@ -5,7 +5,7 @@ using YesNt.Interpreter.Enums; namespace YesNt.Interpreter.Attributes; [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] -internal class StatementAttribute : Attribute +public class StatementAttribute : Attribute { public string Name { get; } public SearchMode SearchMode { get; } @@ -17,7 +17,7 @@ internal class StatementAttribute : Attribute public bool IgnoreSyntaxHighlighting { get; } public string Separator { get; set; } - internal StatementAttribute(string name, SearchMode searchMode, SpaceAround spaceAround, ConsoleColor color) + public StatementAttribute(string name, SearchMode searchMode, SpaceAround spaceAround, ConsoleColor color) { Name = name; SearchMode = searchMode; @@ -25,7 +25,7 @@ internal class StatementAttribute : Attribute Color = color; } - internal StatementAttribute(string name, SearchMode searchMode, SpaceAround spaceAround) + public StatementAttribute(string name, SearchMode searchMode, SpaceAround spaceAround) { Name = name; SearchMode = searchMode; diff --git a/YesNt.Interpreter/Attributes/StaticStatementAttribute.cs b/YesNt.Interpreter/Attributes/StaticStatementAttribute.cs index f0c5a5a..59f80e3 100644 --- a/YesNt.Interpreter/Attributes/StaticStatementAttribute.cs +++ b/YesNt.Interpreter/Attributes/StaticStatementAttribute.cs @@ -5,7 +5,7 @@ using YesNt.Interpreter.Enums; namespace YesNt.Interpreter.Attributes; [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] -internal class StaticStatementAttribute : Attribute +public class StaticStatementAttribute : Attribute { public bool ExecuteInSearchMode { get; set; } public Priority Priority { get; set; } = Priority.Normal; diff --git a/YesNt.Interpreter/Enums/Priority.cs b/YesNt.Interpreter/Enums/Priority.cs index acb372b..eb8353d 100644 --- a/YesNt.Interpreter/Enums/Priority.cs +++ b/YesNt.Interpreter/Enums/Priority.cs @@ -1,6 +1,6 @@ namespace YesNt.Interpreter.Enums; -internal enum Priority +public enum Priority { PreProcessing, Highest, diff --git a/YesNt.Interpreter/Program.cs b/YesNt.Interpreter/Program.cs index ccbba14..1582b6b 100644 --- a/YesNt.Interpreter/Program.cs +++ b/YesNt.Interpreter/Program.cs @@ -1,14 +1,22 @@ -using System; +using System; using YesNt.Interpreter.Runtime; -if (args.Length == 1) +namespace YesNt.Interpreter; + +internal static class Program { - YesNtInterpreter interpreter = new YesNtInterpreter(); - interpreter.Initialize(); - interpreter.Execute(args[0]); + internal static void Main(string[] args) + { + if (args.Length == 1) + { + YesNtInterpreter interpreter = new YesNtInterpreter(); + interpreter.Initialize(); + interpreter.Execute(args[0]); + } + else + { + Console.WriteLine("No path specified!"); + } + } } -else -{ - Console.WriteLine("No path specified!"); -} \ No newline at end of file diff --git a/YesNt.Interpreter/Runtime/YesNtInterpreter.cs b/YesNt.Interpreter/Runtime/YesNtInterpreter.cs index 28192bd..65b5c47 100644 --- a/YesNt.Interpreter/Runtime/YesNtInterpreter.cs +++ b/YesNt.Interpreter/Runtime/YesNtInterpreter.cs @@ -41,6 +41,25 @@ public class YesNtInterpreter } } + public void AddStatement(StatementAttribute attribute, Action handler) + { + statements[attribute] = handler; + statements = statements + .OrderBy(s => s.Key.Priority) + .ThenByDescending(s => s.Key.Name.Length) + .ToDictionary(x => x.Key, x => x.Value); + } + + public void AddStatement(string name, SearchMode searchMode, SpaceAround spaceAround, Action handler) + { + AddStatement(new StatementAttribute(name, searchMode, spaceAround), handler); + } + + public void AddStatement(string name, SearchMode searchMode, SpaceAround spaceAround, ConsoleColor consoleColor, Action handler) + { + AddStatement(new StatementAttribute(name, searchMode, spaceAround, consoleColor), handler); + } + public void Stop() { runtimeInfo.Exit("Terminated by external process", true); diff --git a/YesNt.Interpreter/YesNt.Interpreter.csproj b/YesNt.Interpreter/YesNt.Interpreter.csproj index f6e5bb2..67e7926 100644 --- a/YesNt.Interpreter/YesNt.Interpreter.csproj +++ b/YesNt.Interpreter/YesNt.Interpreter.csproj @@ -4,7 +4,7 @@ net8.0 YesNt.Interpreter - Exe + Library AnyCPU;x64