An open API service indexing awesome lists of open source software.

https://github.com/otymko/jones

Engine OneScript on Java 😜
https://github.com/otymko/jones

hacktoberfest

Last synced: 7 months ago
JSON representation

Engine OneScript on Java 😜

Awesome Lists containing this project

README

          

# Java OneScript (Jones)

Jones - рСализация [OneScript](https://github.com/EvilBeaver/OneScript) Π½Π° Java.

## Π—Π°Ρ‡Π΅ΠΌ?

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

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

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

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

Π³Π΄Π΅:

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

НапримСр:

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

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

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

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

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

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

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

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

`develop-SNAPSHOT` - Ρ‚Π΅Π³, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ бСрСтся вСрсия с [JitPack](https://jitpack.io/#otymko/JOneS/). Π’Π΅Π³ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ
Π½ΠΎΠΌΠ΅Ρ€ вСрсии (Ссли Π΅ΡΡ‚ΡŒ Ρ€Π΅Π»ΠΈΠ·Ρ‹), Ρ‚Π°ΠΊ ΠΈ Ρ…Π΅Ρˆ ΠΊΠΎΠΌΠΌΠΈΡ‚Π° Π½Π° GitHub.

Gradle:

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

Gradle (Kotlin):

```kotlin
implementation("com.github.otymko", "JOneS", "develop-SNAPSHOT")
```

```xml

com.github.otymko
JOneS
develop-SNAPSHOT

```

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

```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](https://github.com/otymko/JOneS/projects/1) ΠΈ Π²Ρ‹ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅Π»ΠΈΠ·.

## ЛицСнзия

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