Compare commits

...

8 Commits

Author SHA1 Message Date
48bd1e2015 bump 2024-01-12 09:54:32 +02:00
304665904f feat: extract log API to console 2024-01-12 09:53:56 +02:00
56ae3a85a6 build: improve build scripts 2024-01-12 09:48:20 +02:00
0178cb2194 build: specify java toolchain 2024-01-11 11:46:51 +02:00
a2cb5cd473 build: add gradle wrapper props 2024-01-11 11:46:41 +02:00
c123427e77 bump 2024-01-11 10:59:07 +02:00
7ac5ded185 build: set main class in jar manifest 2024-01-11 10:58:40 +02:00
769d6ae8fc version unbump 2024-01-11 10:55:43 +02:00
8 changed files with 71 additions and 40 deletions

4
.gitignore vendored
View File

@@ -14,9 +14,11 @@
!/.gitignore
!/.gitattributes
!/build.js
!/LICENSE
!/README.md
!/settings.gradle
!/build.gradle
!/gradle.properties
!/gradle
!/gradle/wrapper
!/gradle/wrapper/gradle-wrapper.properties

View File

@@ -1,29 +1,32 @@
plugins {
id 'application'
id "application"
}
java {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
toolchain.languageVersion = JavaLanguageVersion.of(11)
withSourcesJar()
}
jar {
manifest.attributes["Main-class"] = project.main_class
}
sourceSets {
main.java.srcDirs = [ 'src/java' ]
main.resources.srcDirs = [ 'src/assets' ]
main.java.srcDirs = [ "src/java" ]
main.resources.srcDirs = [ "src/assets" ]
}
processResources {
filesMatching('metadata.json') {
expand (
'version': project.project_version,
'name': project.project_name
filesMatching "metadata.json", {
expand(
version: project.project_version,
name: project.project_name
)
}
}
application {
mainClass = project.main_class
}
archivesBaseName = project.project_name
version = project.project_version
base.archivesName = project.project_name
version = project.project_version
group = project.project_group

View File

@@ -1,3 +1,4 @@
project_group = me.topchetoeu
project_name = jscript
project_version = 0.8.4-beta
project_version = 0.8.6-beta
main_class = me.topchetoeu.jscript.utils.JScriptRepl

View File

@@ -0,0 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

View File

@@ -0,0 +1,5 @@
plugins {
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.7.0'
}
rootProject.name = properties.project_name

View File

@@ -711,14 +711,14 @@ public class Values {
res.append("{\n");
for (var el : obj.values.entrySet()) {
for (int i = 0; i < tab + 1; i++) System.out.print(" ");
for (int i = 0; i < tab + 1; i++) res.append(" ");
res.append(toReadable(ctx, el.getKey(), passed, tab + 1));
res.append(": ");
res.append(toReadable(ctx, el.getValue(), passed, tab + 1));
res.append(",\n");
}
for (var el : obj.properties.entrySet()) {
for (int i = 0; i < tab + 1; i++) System.out.print(" ");
for (int i = 0; i < tab + 1; i++) res.append(" ");
res.append(toReadable(ctx, el.getKey(), passed, tab + 1));
res.append(": [prop],\n");
}

View File

@@ -0,0 +1,36 @@
package me.topchetoeu.jscript.lib;
import java.io.IOException;
import java.io.OutputStream;
import me.topchetoeu.jscript.core.engine.values.Values;
import me.topchetoeu.jscript.utils.filesystem.FilesystemException;
import me.topchetoeu.jscript.utils.filesystem.FilesystemException.FSCode;
import me.topchetoeu.jscript.utils.interop.Arguments;
import me.topchetoeu.jscript.utils.interop.Expose;
import me.topchetoeu.jscript.utils.interop.WrapperName;
@WrapperName("Console")
public class ConsoleLib {
private final OutputStream stream;
@Expose
public void __log(Arguments args) {
try {
var first = true;
for (var el : args.args) {
if (!first) stream.write(" ".getBytes());
first = false;
stream.write(Values.toReadable(args.ctx, el).getBytes());
}
stream.write((byte)'\n');
}
catch (IOException e) {
throw new FilesystemException("stdout", FSCode.NO_PERMISSIONS_RW);
}
}
public ConsoleLib(OutputStream stream) {
this.stream = stream;
}
}

View File

@@ -1,9 +1,7 @@
package me.topchetoeu.jscript.lib;
import java.io.IOException;
import java.util.HashMap;
import me.topchetoeu.jscript.common.Reading;
import me.topchetoeu.jscript.core.engine.Context;
import me.topchetoeu.jscript.core.engine.Environment;
import me.topchetoeu.jscript.core.engine.scope.GlobalScope;
@@ -34,27 +32,6 @@ public class Internals {
else throw EngineException.ofError("Modules are not supported.");
}
@Expose(target = ExposeTarget.STATIC)
public static Object __log(Arguments args) {
for (var arg : args.args) {
Values.printValue(args.ctx, arg);
System.out.print(" ");
}
System.out.println();
return args.get(0);
}
@Expose(target = ExposeTarget.STATIC)
public static String __readline() {
try {
return Reading.readline();
}
catch (IOException e) {
e.printStackTrace();
return null;
}
}
@Expose(target = ExposeTarget.STATIC)
public static Thread __setTimeout(Arguments args) {
var func = args.convert(0, FunctionValue.class);