MAGES ist der offizielle Nachfolger von YAMP. Es handelt sich um einen sehr einfachen, aber leistungsstarken Ausdrucksparser und -interpreter. Sie können MAGES verwenden, um Ihrer Anwendung eine ausgefeilte, einfach anpassbare und schlanke Skript-Engine hinzuzufügen.
MAGES wurde unter anderem in Microsofts PowerToys verwendet.
MAGES wurde gerade aktualisiert (v3.0.0) mit Objektmetadaten, direkter Listenunterstützung und JSX-Syntax.
2023 :
MAGES wurde aktualisiert (v2.0.0) mit Unterstützung für komplexe Zahlen. Außerdem wurden das Build-Ziel und die Laufzeit aktualisiert, um moderne Möglichkeiten nutzen zu können.
2018 :
Die erste stabile Version wurde veröffentlicht. Die aktuelle Version 1.6.0 enthält eine verbesserte REPL. Die Bibliothek enthält alles, um einfache Skriptoperationen in C# auszuführen. Ein CodeProject-Artikel über die Bibliothek (der auch einige Hintergrund- und Leistungsvergleiche enthält) ist ebenfalls verfügbar.
MAGES selbst hat keine Abhängigkeiten, die Tests sind jedoch von NUnit abhängig und die Benchmarks verwenden BenchmarkDotNet. Normalerweise sollte MAGES über die NuGet-Paketquelle installiert werden. Wenn dies bei Ihnen nicht funktioniert, klonen Sie die Quelle und erstellen Sie MAGES selbst. Stellen Sie sicher, dass alle Unit-Tests erfolgreich sind.
Die gesamte Bibliothek wurde für die Nutzung durch .NET Core 3.0 (oder höher) / .NET 5.0 (oder höher)-Anwendungen konzipiert. Dies bedeutet, dass es (unter anderem) mit Unity 2021.2 oder Mono 6.4 kompatibel ist. Das NuGet-Paket ist über den offiziellen Paket-Feed verfügbar.
Im einfachsten Fall erstellen Sie eine neue Engine, die einen globalen Bereich (für Variablen und Funktionen) enthält, und starten die Interpretation.
var engine = new Mages . Core . Engine ( ) ;
var result = engine . Interpret ( " sin(2) * cos(pi / 4) " ) ; // 0.642970376623918
Sie können auch wiederverwendbare Blöcke aus Snippets erstellen.
var expOne = engine . Compile ( " exp(1) " ) ;
var result = expOne ( ) ; // 2.71828182845905
Oder Sie können mit von MAGES erstellten Elementen interagieren.
var func = engine . Interpret ( " (x, y) => x * y + 3 * sqrt(x) " ) as Mages . Core . Function ;
var result = func . Invoke ( new Object [ ] { 4.0 , 3.0 } ) ; // 18.0
Oder noch einfacher (Details werden im Dokument „Erste Schritte“ erklärt):
var func = engine . Interpret ( " (x, y) => x * y + 3 * sqrt(x) " ) as Mages . Core . Function ;
var result = func . Call ( 4 , 3 ) ; // 18.0
Dies sind nur einige der grundlegenderen Beispiele. Weitere Informationen finden Sie in der Dokumentation.
Die Dokumentation erfolgt in Form von Markdown-Dokumenten, die im Dokumentordner dieses Repositorys abgelegt werden. Die folgenden Links sind einen Blick wert:
Wenn etwas fehlt, unklar oder falsch ist, reichen Sie entweder eine PR ein oder melden Sie ein Problem. Weitere Informationen finden Sie im folgenden Abschnitt zu Beiträgen.
Beiträge in Form von Feature-Implementierungen oder Bugfixes sind sehr willkommen, müssen aber auf organisierte und konsistente Weise erfolgen. Die Beitragsrichtlinien sollten vor Beginn jeglicher Arbeiten gelesen werden.
Beiträge können auch in Form von Fehlerberichten und Funktionsanfragen entgegengenommen werden. Es lebe die Open-Source-Entwicklung!
Die Semver-Regeln sind unser Brot und Butter. Kurz gesagt bedeutet dies:
Daher: Erwarten Sie keine bahnbrechenden Änderungen innerhalb derselben Hauptversion.
Die folgenden Unternehmen haben einen Teil der Entwicklung von MAGES gesponsert.
Vielen Dank für all die Unterstützung und das Vertrauen in das Projekt!
Die MIT-Lizenz (MIT)
Copyright (c) 2016-2024 Florian Rappl
Hiermit wird jeder Person, die eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die „Software“) erhält, kostenlos die Erlaubnis erteilt, mit der Software ohne Einschränkung zu handeln, einschließlich und ohne Einschränkung der Rechte zur Nutzung, zum Kopieren, Ändern und Zusammenführen , Kopien der Software zu veröffentlichen, zu verteilen, unterzulizenzieren und/oder zu verkaufen und Personen, denen die Software zur Verfügung gestellt wird, dies zu gestatten, vorbehaltlich der folgenden Bedingungen:
Der obige Urheberrechtshinweis und dieser Genehmigungshinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.
DIE SOFTWARE WIRD „WIE BESEHEN“ ZUR VERFÜGUNG GESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG. IN KEINEM FALL SIND DIE AUTOREN ODER URHEBERRECHTSINHABER HAFTBAR FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER ANDERE HAFTUNG, WEDER AUS EINER VERTRAGLICHEN HANDLUNG, AUS HANDLUNG ODER ANDERWEITIG, DIE SICH AUS, AUS ODER IN ZUSAMMENHANG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN HANDELN IN DER SOFTWARE ERGEBEN SOFTWARE.