Skip to content

otymko/JOneS

Repository files navigation

Java OneScript (Jones)

Jones - рСализация OneScript Π½Π° Java.

Π—Π°Ρ‡Π΅ΠΌ?

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Java-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… языках Ρ‡Π΅Ρ€Π΅Π· скрипты OneScript.

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?

Запуск скрипта ΠΈΠ· консоли

java -jar /path/to/jonec-exec.jar /path/to/script.os

Π³Π΄Π΅:

  • /path/to/jonec-exec.jar - ΠΏΡƒΡ‚ΡŒ ΠΊ исполняСмому Ρ„Π°ΠΉΠ»Ρƒ. Π“Π΄Π΅ Π½Π°ΠΉΡ‚ΠΈ? Π‘Π°ΠΌΠΎΠΌΡƒ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· исходников ΠΈΠ»ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Ρ€Π΅Π»ΠΈΠ·Π°Ρ… (Ссли ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ).
  • /path/to/script.os - ΠΏΡƒΡ‚ΡŒ ΠΊ скрипту OneScript.

НапримСр:

java -jar jonec-exec.jar my-script.os

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ

ΠΠ°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π‘ΠΊΡ€ΠΈΠΏΡ‚ my-script.os:

ΠŸΠ΅Ρ€Π΅ΠΌ Π§ΠΈΡΠ»ΠΎΠ˜Π·ΠœΠΎΠ΄ΡƒΠ»Ρ

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ВывСстиЧисло()
    Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ(Π§ΠΈΡΠ»ΠΎΠ˜Π·ΠœΠΎΠ΄ΡƒΠ»Ρ);
ΠšΠΎΠ½Π΅Ρ†ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

Π§ΠΈΡΠ»ΠΎΠ˜Π·ΠœΠΎΠ΄ΡƒΠ»Ρ = 42;

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ (собираСтся Π½Π° JitPack)

develop-SNAPSHOT - Ρ‚Π΅Π³, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ бСрСтся вСрсия с JitPack. Π’Π΅Π³ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ Π½ΠΎΠΌΠ΅Ρ€ вСрсии (Ссли Π΅ΡΡ‚ΡŒ Ρ€Π΅Π»ΠΈΠ·Ρ‹), Ρ‚Π°ΠΊ ΠΈ Ρ…Π΅Ρˆ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π½Π° GitHub.

Gradle:

implementation group: 'com.github.otymko', name: 'JOneS', version: 'develop-SNAPSHOT'

Gradle (Kotlin):

implementation("com.github.otymko", "JOneS", "develop-SNAPSHOT")
<dependency>
    <groupId>com.github.otymko</groupId>
    <artifactId>JOneS</artifactId>
    <version>develop-SNAPSHOT</version>
</dependency>

ДобавляСм Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Java:

// ΠŸΡƒΡ‚ΡŒ ΠΊ скрипту Π½Π° Jones
Path pathToScript = Path.of("/path/to/my-script.os");
// Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π΄Π²ΠΈΠΆΠΊΠ°
ScriptEngine engine = new ScriptEngine();
// Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ компилятора
ScriptCompiler compiler = new ScriptCompiler(engine);
// ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ скрипта с Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ "Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ"(UserScriptContext)
ModuleImage moduleImage = compiler.compile(pathToScript, UserScriptContext.class);

// Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ ΠΈΠ· скомпилированного скрипта
ScriptDrivenObject sdo = engine.newObject(moduleImage);

// ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ индСкс ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΠΎ Π΅Π³ΠΎ ΠΌΠΌΠ΅Π½ΠΈ
int methodId = sdo.getScriptMethod("ВывСстиЧисло");
// Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄
sdo.callScriptMethod(engine, methodId, new IValue[0]);

ПослС выполнСния ΠΊΠΎΠ΄Π°, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ сообщСниС:

42

ДороТная ΠΊΠ°Ρ€Ρ‚Π°

Для Π½Π°Ρ‡Π°Π»Π°, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° Доска MVP ΠΈ Π²Ρ‹ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅Π»ΠΈΠ·.

ЛицСнзия

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ лицСнзия Mozilla Public License Version 2.0