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