mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 08:44:20 +03:00
Совместимость с Android проектом
This commit is contained in:
parent
25d335a512
commit
47b593241f
@ -8,6 +8,10 @@ import java.io.UnsupportedEncodingException;
|
|||||||
|
|
||||||
public class Console {
|
public class Console {
|
||||||
|
|
||||||
|
public static String newline() {
|
||||||
|
return System.lineSeparator();
|
||||||
|
}
|
||||||
|
|
||||||
public static void print(String value) {
|
public static void print(String value) {
|
||||||
System.out.print(value);
|
System.out.print(value);
|
||||||
}
|
}
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
package com.annimon.ownlang.annotations;
|
|
||||||
|
|
||||||
import java.lang.annotation.ElementType;
|
|
||||||
import java.lang.annotation.Retention;
|
|
||||||
import java.lang.annotation.RetentionPolicy;
|
|
||||||
import java.lang.annotation.Target;
|
|
||||||
|
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
|
||||||
@Target(ElementType.TYPE)
|
|
||||||
public @interface ConstantInitializer {
|
|
||||||
|
|
||||||
}
|
|
@ -5,9 +5,9 @@ package com.annimon.ownlang.lib;
|
|||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public final class NumberValue implements Value {
|
public final class NumberValue implements Value {
|
||||||
|
|
||||||
public static final NumberValue MINUS_ONE, ZERO, ONE;
|
public static final NumberValue MINUS_ONE, ZERO, ONE;
|
||||||
|
|
||||||
private static final int CACHE_MIN = -128, CACHE_MAX = 127;
|
private static final int CACHE_MIN = -128, CACHE_MAX = 127;
|
||||||
private static final NumberValue[] NUMBER_CACHE;
|
private static final NumberValue[] NUMBER_CACHE;
|
||||||
static {
|
static {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules;
|
package com.annimon.ownlang.lib.modules;
|
||||||
|
|
||||||
import com.annimon.ownlang.annotations.ConstantInitializer;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
@ -20,7 +19,6 @@ import javax.swing.JPanel;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
@ConstantInitializer
|
|
||||||
public final class canvas implements Module {
|
public final class canvas implements Module {
|
||||||
|
|
||||||
private static JFrame frame;
|
private static JFrame frame;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules;
|
package com.annimon.ownlang.lib.modules;
|
||||||
|
|
||||||
import com.annimon.ownlang.annotations.ConstantInitializer;
|
|
||||||
import com.annimon.ownlang.exceptions.TypeException;
|
import com.annimon.ownlang.exceptions.TypeException;
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
import static com.annimon.ownlang.lib.Converters.*;
|
import static com.annimon.ownlang.lib.Converters.*;
|
||||||
@ -43,7 +42,6 @@ import javax.swing.JFrame;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
@ConstantInitializer
|
|
||||||
public final class canvasfx implements Module {
|
public final class canvasfx implements Module {
|
||||||
|
|
||||||
private static final int FX_EFFECT_TYPE = 5301;
|
private static final int FX_EFFECT_TYPE = 5301;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules;
|
package com.annimon.ownlang.lib.modules;
|
||||||
|
|
||||||
import com.annimon.ownlang.annotations.ConstantInitializer;
|
|
||||||
import com.annimon.ownlang.exceptions.TypeException;
|
import com.annimon.ownlang.exceptions.TypeException;
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
import java.text.DateFormat;
|
import java.text.DateFormat;
|
||||||
@ -14,7 +13,6 @@ import java.util.Locale;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
@ConstantInitializer
|
|
||||||
public final class date implements Module {
|
public final class date implements Module {
|
||||||
|
|
||||||
private static final int DATE_DATE_FORMAT = 9829;
|
private static final int DATE_DATE_FORMAT = 9829;
|
||||||
@ -197,7 +195,7 @@ public final class date implements Module {
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
calendar.setTime(DateFormat.getDateTimeInstance().parse(arg1.asString()));
|
calendar.setTime(DateFormat.getDateTimeInstance().parse(arg1.asString()));
|
||||||
} catch (ParseException ex) { }
|
} catch (ParseException ignore) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void date(Calendar calendar, Value arg1, Value arg2) {
|
private static void date(Calendar calendar, Value arg1, Value arg2) {
|
||||||
@ -207,7 +205,7 @@ public final class date implements Module {
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
calendar.setTime(new SimpleDateFormat(arg1.asString()).parse(arg2.asString()));
|
calendar.setTime(new SimpleDateFormat(arg1.asString()).parse(arg2.asString()));
|
||||||
} catch (ParseException ex) { }
|
} catch (ParseException ignore) { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules;
|
package com.annimon.ownlang.lib.modules;
|
||||||
|
|
||||||
import com.annimon.ownlang.annotations.ConstantInitializer;
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
@ -21,7 +20,6 @@ import java.util.Map;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
@ConstantInitializer
|
|
||||||
public final class files implements Module {
|
public final class files implements Module {
|
||||||
|
|
||||||
private static Map<Integer, FileInfo> files;
|
private static Map<Integer, FileInfo> files;
|
||||||
@ -34,7 +32,7 @@ public final class files implements Module {
|
|||||||
public void init() {
|
public void init() {
|
||||||
files = new HashMap<>();
|
files = new HashMap<>();
|
||||||
initConstants();
|
initConstants();
|
||||||
|
|
||||||
Functions.set("fopen", new fopen());
|
Functions.set("fopen", new fopen());
|
||||||
Functions.set("flush", new flush());
|
Functions.set("flush", new flush());
|
||||||
Functions.set("fclose", new fclose());
|
Functions.set("fclose", new fclose());
|
||||||
@ -169,7 +167,7 @@ public final class files implements Module {
|
|||||||
|
|
||||||
protected abstract Value execute(FileInfo fileInfo, Value[] args) throws IOException;
|
protected abstract Value execute(FileInfo fileInfo, Value[] args) throws IOException;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class listFiles extends FileFunction {
|
private static class listFiles extends FileFunction {
|
||||||
@Override
|
@Override
|
||||||
protected Value execute(FileInfo fileInfo, Value[] args) throws IOException {
|
protected Value execute(FileInfo fileInfo, Value[] args) throws IOException {
|
||||||
@ -559,7 +557,7 @@ public final class files implements Module {
|
|||||||
return NumberValue.ONE;
|
return NumberValue.ONE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class writeText extends FileFunction {
|
private static class writeText extends FileFunction {
|
||||||
@Override
|
@Override
|
||||||
protected Value execute(FileInfo fileInfo, Value[] args) throws IOException {
|
protected Value execute(FileInfo fileInfo, Value[] args) throws IOException {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules;
|
package com.annimon.ownlang.lib.modules;
|
||||||
|
|
||||||
import com.annimon.ownlang.annotations.ConstantInitializer;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
import com.annimon.ownlang.lib.modules.functions.forms.Components;
|
import com.annimon.ownlang.lib.modules.functions.forms.Components;
|
||||||
import com.annimon.ownlang.lib.modules.functions.forms.LayoutManagers;
|
import com.annimon.ownlang.lib.modules.functions.forms.LayoutManagers;
|
||||||
@ -13,7 +12,6 @@ import javax.swing.SwingConstants;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
@ConstantInitializer
|
|
||||||
public final class forms implements Module {
|
public final class forms implements Module {
|
||||||
|
|
||||||
public static void initConstants() {
|
public static void initConstants() {
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
package com.annimon.ownlang.lib.modules;
|
package com.annimon.ownlang.lib.modules;
|
||||||
|
|
||||||
import com.annimon.ownlang.annotations.ConstantInitializer;
|
import com.annimon.ownlang.lib.FunctionValue;
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Functions;
|
||||||
|
import com.annimon.ownlang.lib.Variables;
|
||||||
import com.annimon.ownlang.lib.modules.functions.*;
|
import com.annimon.ownlang.lib.modules.functions.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
@ConstantInitializer
|
|
||||||
public final class functional implements Module {
|
public final class functional implements Module {
|
||||||
|
|
||||||
public static void initConstants() {
|
public static void initConstants() {
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.TypeException;
|
import com.annimon.ownlang.exceptions.TypeException;
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.FunctionValue;
|
||||||
|
import com.annimon.ownlang.lib.Types;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
|
|
||||||
public final class functional_chain implements Function {
|
public final class functional_chain implements Function {
|
||||||
|
|
||||||
@ -21,4 +25,4 @@ public final class functional_chain implements Function {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.TypeException;
|
import com.annimon.ownlang.exceptions.TypeException;
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.FunctionValue;
|
||||||
|
import com.annimon.ownlang.lib.Types;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
|
|
||||||
public final class functional_combine implements Function {
|
public final class functional_combine implements Function {
|
||||||
|
|
||||||
@ -24,4 +28,4 @@ public final class functional_combine implements Function {
|
|||||||
return new FunctionValue(result);
|
return new FunctionValue(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,12 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.TypeException;
|
import com.annimon.ownlang.exceptions.TypeException;
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.ArrayValue;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.FunctionValue;
|
||||||
|
import com.annimon.ownlang.lib.Types;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -35,4 +40,4 @@ public final class functional_flatmap implements Function {
|
|||||||
}
|
}
|
||||||
return new ArrayValue(values);
|
return new ArrayValue(values);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@ package com.annimon.ownlang.lib.modules.functions;
|
|||||||
|
|
||||||
import com.annimon.ownlang.exceptions.TypeException;
|
import com.annimon.ownlang.exceptions.TypeException;
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public final class functional_foreach implements Function {
|
public final class functional_foreach implements Function {
|
||||||
@ -32,4 +31,4 @@ public final class functional_foreach implements Function {
|
|||||||
}
|
}
|
||||||
throw new TypeException("Invalid first argument. Array or map expected");
|
throw new TypeException("Invalid first argument. Array or map expected");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,13 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.TypeException;
|
import com.annimon.ownlang.exceptions.TypeException;
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.ArrayValue;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.FunctionValue;
|
||||||
|
import com.annimon.ownlang.lib.MapValue;
|
||||||
|
import com.annimon.ownlang.lib.Types;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public final class functional_map implements Function {
|
public final class functional_map implements Function {
|
||||||
@ -53,4 +58,4 @@ public final class functional_map implements Function {
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,13 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.TypeException;
|
import com.annimon.ownlang.exceptions.TypeException;
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.ArrayValue;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.FunctionValue;
|
||||||
|
import com.annimon.ownlang.lib.MapValue;
|
||||||
|
import com.annimon.ownlang.lib.Types;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public final class functional_reduce implements Function {
|
public final class functional_reduce implements Function {
|
||||||
@ -35,4 +40,4 @@ public final class functional_reduce implements Function {
|
|||||||
}
|
}
|
||||||
throw new TypeException("Invalid first argument. Array or map expected");
|
throw new TypeException("Invalid first argument. Array or map expected");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,12 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.TypeException;
|
import com.annimon.ownlang.exceptions.TypeException;
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.ArrayValue;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.FunctionValue;
|
||||||
|
import com.annimon.ownlang.lib.Types;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
public final class functional_sortby implements Function {
|
public final class functional_sortby implements Function {
|
||||||
@ -22,4 +27,4 @@ public final class functional_sortby implements Function {
|
|||||||
return new ArrayValue(elements);
|
return new ArrayValue(elements);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,12 @@ import java.io.IOException;
|
|||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import okhttp3.*;
|
import okhttp3.FormBody;
|
||||||
|
import okhttp3.MediaType;
|
||||||
|
import okhttp3.OkHttpClient;
|
||||||
|
import okhttp3.Request;
|
||||||
|
import okhttp3.RequestBody;
|
||||||
|
import okhttp3.Response;
|
||||||
import okhttp3.internal.http.HttpMethod;
|
import okhttp3.internal.http.HttpMethod;
|
||||||
|
|
||||||
public final class http_http implements Function {
|
public final class http_http implements Function {
|
||||||
@ -168,4 +173,4 @@ public final class http_http implements Function {
|
|||||||
|
|
||||||
return RequestBody.create(type, params.asString());
|
return RequestBody.create(type, params.asString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,6 @@ import com.annimon.ownlang.lib.ValueUtils;
|
|||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONTokener;
|
import org.json.JSONTokener;
|
||||||
|
|
||||||
|
|
||||||
public final class json_decode implements Function {
|
public final class json_decode implements Function {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -21,4 +20,4 @@ public final class json_decode implements Function {
|
|||||||
throw new RuntimeException("Error while parsing json", ex);
|
throw new RuntimeException("Error while parsing json", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.ArrayValue;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.NumberValue;
|
||||||
|
import com.annimon.ownlang.lib.Types;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
|
|
||||||
public final class robot_exec implements Function {
|
public final class robot_exec implements Function {
|
||||||
|
|
||||||
@ -50,4 +55,4 @@ public final class robot_exec implements Function {
|
|||||||
}
|
}
|
||||||
return strings;
|
return strings;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,12 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.TypeException;
|
import com.annimon.ownlang.exceptions.TypeException;
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.ArrayValue;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.MapValue;
|
||||||
|
import com.annimon.ownlang.lib.Types;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
|
|
||||||
public final class std_arrayCombine implements Function {
|
public final class std_arrayCombine implements Function {
|
||||||
|
|
||||||
@ -26,4 +31,4 @@ public final class std_arrayCombine implements Function {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,12 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.TypeException;
|
import com.annimon.ownlang.exceptions.TypeException;
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.MapValue;
|
||||||
|
import com.annimon.ownlang.lib.NumberValue;
|
||||||
|
import com.annimon.ownlang.lib.Types;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
|
|
||||||
public final class std_arrayKeyExists implements Function {
|
public final class std_arrayKeyExists implements Function {
|
||||||
|
|
||||||
@ -15,4 +20,4 @@ public final class std_arrayKeyExists implements Function {
|
|||||||
return NumberValue.fromBoolean(map.containsKey(args[0]));
|
return NumberValue.fromBoolean(map.containsKey(args[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,12 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.TypeException;
|
import com.annimon.ownlang.exceptions.TypeException;
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.ArrayValue;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.MapValue;
|
||||||
|
import com.annimon.ownlang.lib.Types;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -22,4 +27,4 @@ public final class std_arrayKeys implements Function {
|
|||||||
return new ArrayValue(keys);
|
return new ArrayValue(keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,12 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.TypeException;
|
import com.annimon.ownlang.exceptions.TypeException;
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.ArrayValue;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.MapValue;
|
||||||
|
import com.annimon.ownlang.lib.Types;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -22,4 +27,4 @@ public final class std_arrayValues implements Function {
|
|||||||
return new ArrayValue(values);
|
return new ArrayValue(values);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,15 +1,19 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.NumberValue;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
|
|
||||||
public final class std_charat implements Function {
|
public final class std_charat implements Function {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
Arguments.check(2, args.length);
|
Arguments.check(2, args.length);
|
||||||
|
|
||||||
final String input = args[0].asString();
|
final String input = args[0].asString();
|
||||||
final int index = args[1].asInt();
|
final int index = args[1].asInt();
|
||||||
|
|
||||||
return NumberValue.of((short)input.charAt(index));
|
return NumberValue.of((short)input.charAt(index));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,11 +9,12 @@ public final class std_echo implements Function {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
|
final StringBuilder sb = new StringBuilder();
|
||||||
for (Value arg : args) {
|
for (Value arg : args) {
|
||||||
Console.print(arg.asString());
|
sb.append(arg.asString());
|
||||||
Console.print(" ");
|
sb.append(" ");
|
||||||
}
|
}
|
||||||
Console.println();
|
Console.println(sb.toString());
|
||||||
return NumberValue.ZERO;
|
return NumberValue.ZERO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,20 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.NumberValue;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
|
|
||||||
public final class std_indexof implements Function {
|
public final class std_indexof implements Function {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
Arguments.checkOrOr(2, 3, args.length);
|
Arguments.checkOrOr(2, 3, args.length);
|
||||||
|
|
||||||
final String input = args[0].asString();
|
final String input = args[0].asString();
|
||||||
final String what = args[1].asString();
|
final String what = args[1].asString();
|
||||||
final int index = (args.length == 3) ? args[2].asInt() : 0;
|
final int index = (args.length == 3) ? args[2].asInt() : 0;
|
||||||
|
|
||||||
return NumberValue.of(input.indexOf(what, index));
|
return NumberValue.of(input.indexOf(what, index));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,12 @@ package com.annimon.ownlang.lib.modules.functions;
|
|||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
||||||
import com.annimon.ownlang.exceptions.TypeException;
|
import com.annimon.ownlang.exceptions.TypeException;
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.ArrayValue;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.StringValue;
|
||||||
|
import com.annimon.ownlang.lib.Types;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
|
|
||||||
public final class std_join implements Function {
|
public final class std_join implements Function {
|
||||||
|
|
||||||
@ -38,4 +43,4 @@ public final class std_join implements Function {
|
|||||||
sb.append(suffix);
|
sb.append(suffix);
|
||||||
return new StringValue(sb.toString());
|
return new StringValue(sb.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.NumberValue;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
|
|
||||||
public final class std_lastindexof implements Function {
|
public final class std_lastindexof implements Function {
|
||||||
|
|
||||||
@ -16,4 +19,4 @@ public final class std_lastindexof implements Function {
|
|||||||
final int index = args[2].asInt();
|
final int index = args[2].asInt();
|
||||||
return NumberValue.of(input.lastIndexOf(what, index));
|
return NumberValue.of(input.lastIndexOf(what, index));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@ import com.annimon.ownlang.lib.Arguments;
|
|||||||
import com.annimon.ownlang.lib.Function;
|
import com.annimon.ownlang.lib.Function;
|
||||||
import com.annimon.ownlang.lib.NumberValue;
|
import com.annimon.ownlang.lib.NumberValue;
|
||||||
import com.annimon.ownlang.lib.Value;
|
import com.annimon.ownlang.lib.Value;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
public final class std_rand implements Function {
|
public final class std_rand implements Function {
|
||||||
@ -40,4 +39,4 @@ public final class std_rand implements Function {
|
|||||||
}
|
}
|
||||||
return NumberValue.of(RND.nextInt(to - from) + from);
|
return NumberValue.of(RND.nextInt(to - from) + from);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.StringValue;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
public final class std_readln implements Function {
|
public final class std_readln implements Function {
|
||||||
@ -11,4 +13,4 @@ public final class std_readln implements Function {
|
|||||||
return new StringValue(sc.nextLine());
|
return new StringValue(sc.nextLine());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.StringValue;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
|
|
||||||
public final class std_replace implements Function {
|
public final class std_replace implements Function {
|
||||||
|
|
||||||
@ -14,4 +17,4 @@ public final class std_replace implements Function {
|
|||||||
|
|
||||||
return new StringValue(input.replace(target, replacement));
|
return new StringValue(input.replace(target, replacement));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.StringValue;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
|
|
||||||
public final class std_replaceall implements Function {
|
public final class std_replaceall implements Function {
|
||||||
|
|
||||||
@ -14,4 +17,4 @@ public final class std_replaceall implements Function {
|
|||||||
|
|
||||||
return new StringValue(input.replaceAll(regex, replacement));
|
return new StringValue(input.replaceAll(regex, replacement));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,20 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.StringValue;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
|
|
||||||
public final class std_replacefirst implements Function {
|
public final class std_replacefirst implements Function {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
Arguments.check(3, args.length);
|
Arguments.check(3, args.length);
|
||||||
|
|
||||||
final String input = args[0].asString();
|
final String input = args[0].asString();
|
||||||
final String regex = args[1].asString();
|
final String regex = args[1].asString();
|
||||||
final String replacement = args[2].asString();
|
final String replacement = args[2].asString();
|
||||||
|
|
||||||
return new StringValue(input.replaceFirst(regex, replacement));
|
return new StringValue(input.replaceFirst(regex, replacement));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,12 @@ package com.annimon.ownlang.lib.modules.functions;
|
|||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
||||||
import com.annimon.ownlang.exceptions.TypeException;
|
import com.annimon.ownlang.exceptions.TypeException;
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.ArrayValue;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.FunctionValue;
|
||||||
|
import com.annimon.ownlang.lib.Types;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
public final class std_sort implements Function {
|
public final class std_sort implements Function {
|
||||||
@ -33,4 +38,4 @@ public final class std_sort implements Function {
|
|||||||
return new ArrayValue(elements);
|
return new ArrayValue(elements);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.ArrayValue;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.StringValue;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
|
|
||||||
public final class std_split implements Function {
|
public final class std_split implements Function {
|
||||||
|
|
||||||
@ -15,4 +19,4 @@ public final class std_split implements Function {
|
|||||||
final String[] parts = input.split(regex, limit);
|
final String[] parts = input.split(regex, limit);
|
||||||
return ArrayValue.of(parts);
|
return ArrayValue.of(parts);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.StringValue;
|
||||||
|
import com.annimon.ownlang.lib.Types;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
|
|
||||||
public final class std_sprintf implements Function {
|
public final class std_sprintf implements Function {
|
||||||
|
|
||||||
@ -17,4 +21,4 @@ public final class std_sprintf implements Function {
|
|||||||
}
|
}
|
||||||
return new StringValue(String.format(format, values));
|
return new StringValue(String.format(format, values));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.StringValue;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
|
|
||||||
public final class std_substring implements Function {
|
public final class std_substring implements Function {
|
||||||
|
|
||||||
@ -21,4 +24,4 @@ public final class std_substring implements Function {
|
|||||||
|
|
||||||
return new StringValue(result);
|
return new StringValue(result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,13 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.Console;
|
import com.annimon.ownlang.Console;
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.FunctionValue;
|
||||||
|
import com.annimon.ownlang.lib.Functions;
|
||||||
|
import com.annimon.ownlang.lib.NumberValue;
|
||||||
|
import com.annimon.ownlang.lib.Types;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
|
|
||||||
public final class std_thread implements Function {
|
public final class std_thread implements Function {
|
||||||
|
|
||||||
@ -21,10 +27,10 @@ public final class std_thread implements Function {
|
|||||||
if (params.length > 0) {
|
if (params.length > 0) {
|
||||||
System.arraycopy(args, 1, params, 0, params.length);
|
System.arraycopy(args, 1, params, 0, params.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
final Thread thread = new Thread(() -> body.execute(params));
|
final Thread thread = new Thread(() -> body.execute(params));
|
||||||
thread.setUncaughtExceptionHandler(Console::handleException);
|
thread.setUncaughtExceptionHandler(Console::handleException);
|
||||||
thread.start();
|
thread.start();
|
||||||
return NumberValue.ZERO;
|
return NumberValue.ZERO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.StringValue;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
|
|
||||||
public final class std_tochar implements Function {
|
public final class std_tochar implements Function {
|
||||||
|
|
||||||
@ -9,4 +12,4 @@ public final class std_tochar implements Function {
|
|||||||
Arguments.check(1, args.length);
|
Arguments.check(1, args.length);
|
||||||
return new StringValue(String.valueOf((char) args[0].asInt()));
|
return new StringValue(String.valueOf((char) args[0].asInt()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.StringValue;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
|
|
||||||
public final class std_tolowercase implements Function {
|
public final class std_tolowercase implements Function {
|
||||||
|
|
||||||
@ -9,4 +12,4 @@ public final class std_tolowercase implements Function {
|
|||||||
Arguments.check(1, args.length);
|
Arguments.check(1, args.length);
|
||||||
return new StringValue(args[0].asString().toLowerCase());
|
return new StringValue(args[0].asString().toLowerCase());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.StringValue;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
|
|
||||||
public final class std_touppercase implements Function {
|
public final class std_touppercase implements Function {
|
||||||
|
|
||||||
@ -9,4 +12,4 @@ public final class std_touppercase implements Function {
|
|||||||
Arguments.check(1, args.length);
|
Arguments.check(1, args.length);
|
||||||
return new StringValue(args[0].asString().toUpperCase());
|
return new StringValue(args[0].asString().toUpperCase());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.StringValue;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
|
|
||||||
public final class std_trim implements Function {
|
public final class std_trim implements Function {
|
||||||
|
|
||||||
@ -9,4 +12,4 @@ public final class std_trim implements Function {
|
|||||||
Arguments.check(1, args.length);
|
Arguments.check(1, args.length);
|
||||||
return new StringValue(args[0].asString().trim());
|
return new StringValue(args[0].asString().trim());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
package com.annimon.ownlang.lib.modules;
|
package com.annimon.ownlang.lib.modules;
|
||||||
|
|
||||||
import com.annimon.ownlang.annotations.ConstantInitializer;
|
import com.annimon.ownlang.lib.Functions;
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.modules.functions.http_download;
|
||||||
import com.annimon.ownlang.lib.modules.functions.*;
|
import com.annimon.ownlang.lib.modules.functions.http_http;
|
||||||
|
import com.annimon.ownlang.lib.modules.functions.http_urlencode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
@ConstantInitializer
|
|
||||||
public final class http implements Module {
|
public final class http implements Module {
|
||||||
|
|
||||||
public static void initConstants() {
|
public static void initConstants() {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules;
|
package com.annimon.ownlang.lib.modules;
|
||||||
|
|
||||||
import com.annimon.ownlang.annotations.ConstantInitializer;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
import java.lang.reflect.Array;
|
import java.lang.reflect.Array;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
@ -11,10 +10,9 @@ import java.util.List;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Java interoperability module.
|
* Java interoperability module.
|
||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
@ConstantInitializer
|
|
||||||
public final class java implements Module {
|
public final class java implements Module {
|
||||||
|
|
||||||
private static final Value NULL = new NullValue();
|
private static final Value NULL = new NullValue();
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules;
|
package com.annimon.ownlang.lib.modules;
|
||||||
|
|
||||||
import com.annimon.ownlang.annotations.ConstantInitializer;
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
||||||
import com.annimon.ownlang.lib.Arguments;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
import com.annimon.ownlang.lib.ArrayValue;
|
import com.annimon.ownlang.lib.ArrayValue;
|
||||||
@ -32,7 +31,6 @@ import java.util.function.Function;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
@ConstantInitializer
|
|
||||||
public final class jdbc implements Module {
|
public final class jdbc implements Module {
|
||||||
|
|
||||||
public static void initConstants() {
|
public static void initConstants() {
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
package com.annimon.ownlang.lib.modules;
|
package com.annimon.ownlang.lib.modules;
|
||||||
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.Functions;
|
||||||
import com.annimon.ownlang.lib.modules.functions.*;
|
import com.annimon.ownlang.lib.modules.functions.json_decode;
|
||||||
|
import com.annimon.ownlang.lib.modules.functions.json_encode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules;
|
package com.annimon.ownlang.lib.modules;
|
||||||
|
|
||||||
import com.annimon.ownlang.annotations.ConstantInitializer;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
import java.util.function.DoubleBinaryOperator;
|
import java.util.function.DoubleBinaryOperator;
|
||||||
import java.util.function.DoubleFunction;
|
import java.util.function.DoubleFunction;
|
||||||
@ -11,7 +10,6 @@ import java.util.function.UnaryOperator;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
@ConstantInitializer
|
|
||||||
public final class math implements Module {
|
public final class math implements Module {
|
||||||
|
|
||||||
private static final DoubleFunction<NumberValue> doubleToNumber = NumberValue::of;
|
private static final DoubleFunction<NumberValue> doubleToNumber = NumberValue::of;
|
||||||
@ -151,7 +149,7 @@ public final class math implements Module {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Function functionConvert(DoubleUnaryOperator opDouble, UnaryOperator<Float> opFloat) {
|
private static Function functionConvert(DoubleUnaryOperator opDouble, UnaryOperator<Float> opFloat) {
|
||||||
return args -> {
|
return args -> {
|
||||||
Arguments.check(1, args.length);
|
Arguments.check(1, args.length);
|
||||||
final Object raw = args[0].raw();
|
final Object raw = args[0].raw();
|
||||||
|
@ -1,6 +1,13 @@
|
|||||||
package com.annimon.ownlang.lib.modules;
|
package com.annimon.ownlang.lib.modules;
|
||||||
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.Console;
|
||||||
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
|
import com.annimon.ownlang.lib.Function;
|
||||||
|
import com.annimon.ownlang.lib.Functions;
|
||||||
|
import com.annimon.ownlang.lib.NumberValue;
|
||||||
|
import com.annimon.ownlang.lib.StringValue;
|
||||||
|
import com.annimon.ownlang.lib.Types;
|
||||||
|
import com.annimon.ownlang.lib.Value;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@ -92,10 +99,10 @@ public final class ounit implements Module {
|
|||||||
for (TestInfo test : tests) {
|
for (TestInfo test : tests) {
|
||||||
if (!test.isPassed) failures++;
|
if (!test.isPassed) failures++;
|
||||||
summaryTime += test.elapsedTimeInMicros;
|
summaryTime += test.elapsedTimeInMicros;
|
||||||
result.append(System.lineSeparator());
|
result.append(Console.newline());
|
||||||
result.append(test.info());
|
result.append(test.info());
|
||||||
}
|
}
|
||||||
result.append(System.lineSeparator());
|
result.append(Console.newline());
|
||||||
result.append(String.format("Tests run: %d, Failures: %d, Time elapsed: %s",
|
result.append(String.format("Tests run: %d, Failures: %d, Time elapsed: %s",
|
||||||
tests.size(), failures,
|
tests.size(), failures,
|
||||||
microsToSeconds(summaryTime)));
|
microsToSeconds(summaryTime)));
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules;
|
package com.annimon.ownlang.lib.modules;
|
||||||
|
|
||||||
import com.annimon.ownlang.annotations.ConstantInitializer;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
import com.annimon.ownlang.lib.modules.functions.robot_exec;
|
import com.annimon.ownlang.lib.modules.functions.robot_exec;
|
||||||
import com.annimon.ownlang.lib.modules.functions.robot_fromclipboard;
|
import com.annimon.ownlang.lib.modules.functions.robot_fromclipboard;
|
||||||
@ -16,7 +15,6 @@ import java.util.Map;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
@ConstantInitializer
|
|
||||||
public final class robot implements Module {
|
public final class robot implements Module {
|
||||||
|
|
||||||
private static final int CLICK_DELAY = 200;
|
private static final int CLICK_DELAY = 200;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules;
|
package com.annimon.ownlang.lib.modules;
|
||||||
|
|
||||||
import com.annimon.ownlang.annotations.ConstantInitializer;
|
|
||||||
import com.annimon.ownlang.exceptions.TypeException;
|
import com.annimon.ownlang.exceptions.TypeException;
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
import io.socket.client.IO;
|
import io.socket.client.IO;
|
||||||
@ -12,7 +11,6 @@ import java.net.URISyntaxException;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
@ConstantInitializer
|
|
||||||
public final class socket implements Module {
|
public final class socket implements Module {
|
||||||
|
|
||||||
public static void initConstants() {
|
public static void initConstants() {
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package com.annimon.ownlang.lib.modules;
|
package com.annimon.ownlang.lib.modules;
|
||||||
|
|
||||||
import com.annimon.ownlang.Main;
|
import com.annimon.ownlang.Main;
|
||||||
import com.annimon.ownlang.annotations.ConstantInitializer;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
import com.annimon.ownlang.lib.modules.functions.*;
|
import com.annimon.ownlang.lib.modules.functions.*;
|
||||||
|
|
||||||
@ -9,7 +8,6 @@ import com.annimon.ownlang.lib.modules.functions.*;
|
|||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
@ConstantInitializer
|
|
||||||
public final class std implements Module {
|
public final class std implements Module {
|
||||||
|
|
||||||
public static void initConstants() {
|
public static void initConstants() {
|
||||||
@ -28,7 +26,7 @@ public final class std implements Module {
|
|||||||
Functions.set("thread", new std_thread());
|
Functions.set("thread", new std_thread());
|
||||||
Functions.set("sync", new std_sync());
|
Functions.set("sync", new std_sync());
|
||||||
Functions.set("try", new std_try());
|
Functions.set("try", new std_try());
|
||||||
|
|
||||||
// String
|
// String
|
||||||
Functions.set("sprintf", new std_sprintf());
|
Functions.set("sprintf", new std_sprintf());
|
||||||
Functions.set("split", new std_split());
|
Functions.set("split", new std_split());
|
||||||
|
@ -1,13 +1,11 @@
|
|||||||
package com.annimon.ownlang.lib.modules;
|
package com.annimon.ownlang.lib.modules;
|
||||||
|
|
||||||
import com.annimon.ownlang.annotations.ConstantInitializer;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
@ConstantInitializer
|
|
||||||
public final class types implements Module {
|
public final class types implements Module {
|
||||||
|
|
||||||
public static void initConstants() {
|
public static void initConstants() {
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.annimon.ownlang.parser;
|
package com.annimon.ownlang.parser;
|
||||||
|
|
||||||
|
import com.annimon.ownlang.Console;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -233,7 +234,7 @@ public final class Beautifier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void newLineStrict() {
|
private void newLineStrict() {
|
||||||
beautifiedCode.append(System.lineSeparator());
|
beautifiedCode.append(Console.newline());
|
||||||
indent();
|
indent();
|
||||||
do {
|
do {
|
||||||
next();
|
next();
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.annimon.ownlang.parser;
|
package com.annimon.ownlang.parser;
|
||||||
|
|
||||||
|
import com.annimon.ownlang.Console;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -33,7 +34,7 @@ public final class ParseErrors implements Iterable<ParseError> {
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
final StringBuilder result = new StringBuilder();
|
final StringBuilder result = new StringBuilder();
|
||||||
for (ParseError error : errors) {
|
for (ParseError error : errors) {
|
||||||
result.append(error).append(System.lineSeparator());
|
result.append(error).append(Console.newline());
|
||||||
}
|
}
|
||||||
return result.toString();
|
return result.toString();
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.annimon.ownlang.parser.ast;
|
package com.annimon.ownlang.parser.ast;
|
||||||
|
|
||||||
|
import com.annimon.ownlang.Console;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -41,7 +42,7 @@ public final class BlockStatement extends InterruptableNode implements Statement
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
final StringBuilder result = new StringBuilder();
|
final StringBuilder result = new StringBuilder();
|
||||||
for (Statement statement : statements) {
|
for (Statement statement : statements) {
|
||||||
result.append(statement.toString()).append(System.lineSeparator());
|
result.append(statement.toString()).append(Console.newline());
|
||||||
}
|
}
|
||||||
return result.toString();
|
return result.toString();
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.annimon.ownlang.parser.optimization;
|
package com.annimon.ownlang.parser.optimization;
|
||||||
|
|
||||||
|
import com.annimon.ownlang.Console;
|
||||||
import com.annimon.ownlang.parser.ast.BlockStatement;
|
import com.annimon.ownlang.parser.ast.BlockStatement;
|
||||||
import com.annimon.ownlang.parser.ast.Expression;
|
import com.annimon.ownlang.parser.ast.Expression;
|
||||||
import com.annimon.ownlang.parser.ast.Node;
|
import com.annimon.ownlang.parser.ast.Node;
|
||||||
@ -98,9 +99,9 @@ public class InstructionCombining extends OptimizationVisitor<Void> implements O
|
|||||||
: ((PrintlnStatement) n2).expression;
|
: ((PrintlnStatement) n2).expression;
|
||||||
if (isConstantValue(e1) && isConstantValue(e2)) {
|
if (isConstantValue(e1) && isConstantValue(e2)) {
|
||||||
String s1 = e1.eval().asString();
|
String s1 = e1.eval().asString();
|
||||||
if (n1Type == 2) s1 += System.lineSeparator();
|
if (n1Type == 2) s1 += Console.newline();
|
||||||
String s2 = e2.eval().asString();
|
String s2 = e2.eval().asString();
|
||||||
if (n2Type == 2) s2 += System.lineSeparator();
|
if (n2Type == 2) s2 += Console.newline();
|
||||||
printCombinedCount++;
|
printCombinedCount++;
|
||||||
return new PrintStatement(new ValueExpression(s1 + s2));
|
return new PrintStatement(new ValueExpression(s1 + s2));
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.annimon.ownlang.parser.visitors;
|
package com.annimon.ownlang.parser.visitors;
|
||||||
|
|
||||||
|
import com.annimon.ownlang.Console;
|
||||||
import com.annimon.ownlang.lib.Function;
|
import com.annimon.ownlang.lib.Function;
|
||||||
import com.annimon.ownlang.lib.FunctionValue;
|
import com.annimon.ownlang.lib.FunctionValue;
|
||||||
import com.annimon.ownlang.lib.Types;
|
import com.annimon.ownlang.lib.Types;
|
||||||
@ -422,7 +423,7 @@ public class PrintVisitor implements ResultVisitor<StringBuilder, StringBuilder>
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void newLine(StringBuilder t) {
|
private void newLine(StringBuilder t) {
|
||||||
t.append(System.lineSeparator());
|
t.append(Console.newline());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void printIndent(StringBuilder sb) {
|
private void printIndent(StringBuilder sb) {
|
||||||
|
@ -62,7 +62,7 @@ public final class Repl {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer.append(line).append(System.lineSeparator());
|
buffer.append(line).append(Console.newline());
|
||||||
Statement program = null;
|
Statement program = null;
|
||||||
try {
|
try {
|
||||||
final List<Token> tokens = Lexer.tokenize(buffer.toString());
|
final List<Token> tokens = Lexer.tokenize(buffer.toString());
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.annimon.ownlang.utils;
|
package com.annimon.ownlang.utils;
|
||||||
|
|
||||||
|
import com.annimon.ownlang.Console;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
@ -62,12 +63,12 @@ public final class TimeMeasurement {
|
|||||||
|
|
||||||
result.append(entry.getKey()).append(": ")
|
result.append(entry.getKey()).append(": ")
|
||||||
.append(convertedTime).append(' ').append(unitName)
|
.append(convertedTime).append(' ').append(unitName)
|
||||||
.append(System.lineSeparator());
|
.append(Console.newline());
|
||||||
}
|
}
|
||||||
if (showSummary) {
|
if (showSummary) {
|
||||||
result.append("Summary: ")
|
result.append("Summary: ")
|
||||||
.append(summaryTime).append(' ').append(unitName)
|
.append(summaryTime).append(' ').append(unitName)
|
||||||
.append(System.lineSeparator());
|
.append(Console.newline());
|
||||||
}
|
}
|
||||||
return result.toString();
|
return result.toString();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user