mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 08:44:20 +03:00
Более удобная проверка аргументов функций
This commit is contained in:
parent
23f0b340d3
commit
48f3ce1a5f
32
src/com/annimon/ownlang/lib/Arguments.java
Normal file
32
src/com/annimon/ownlang/lib/Arguments.java
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
package com.annimon.ownlang.lib;
|
||||||
|
|
||||||
|
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
||||||
|
|
||||||
|
public final class Arguments {
|
||||||
|
|
||||||
|
public static void check(int expected, int got) {
|
||||||
|
if (got != expected) throw new ArgumentsMismatchException(String.format(
|
||||||
|
"%d %s expected, got %d", expected, pluralize(expected), got));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void checkAtLeast(int expected, int got) {
|
||||||
|
if (got < expected) throw new ArgumentsMismatchException(String.format(
|
||||||
|
"At least %d %s expected, got %d", expected, pluralize(expected), got));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void checkOrOr(int expectedOne, int expectedTwo, int got) {
|
||||||
|
if (expectedOne != got && expectedTwo != got)
|
||||||
|
throw new ArgumentsMismatchException(String.format(
|
||||||
|
"%d or %d arguments expected, got %d", expectedOne, expectedTwo, got));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void checkRange(int from, int to, int got) {
|
||||||
|
if (from > got || got > to)
|
||||||
|
throw new ArgumentsMismatchException(String.format(
|
||||||
|
"From %d to %d arguments expected, got %d", from, to, got));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String pluralize(int count) {
|
||||||
|
return (count == 1) ? "argument" : "arguments";
|
||||||
|
}
|
||||||
|
}
|
@ -88,7 +88,7 @@ public final class canvas implements Module {
|
|||||||
|
|
||||||
private static Function intConsumer4Convert(IntConsumer4 consumer) {
|
private static Function intConsumer4Convert(IntConsumer4 consumer) {
|
||||||
return args -> {
|
return args -> {
|
||||||
if (args.length != 4) throw new ArgumentsMismatchException("Four args expected");
|
Arguments.check(4, args.length);
|
||||||
consumer.accept(args[0].asInt(), args[1].asInt(), args[2].asInt(), args[3].asInt());
|
consumer.accept(args[0].asInt(), args[1].asInt(), args[2].asInt(), args[3].asInt());
|
||||||
return NumberValue.ZERO;
|
return NumberValue.ZERO;
|
||||||
};
|
};
|
||||||
@ -181,7 +181,7 @@ public final class canvas implements Module {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length != 3) throw new ArgumentsMismatchException("Three args expected");
|
Arguments.check(3, args.length);
|
||||||
int x = args[1].asInt();
|
int x = args[1].asInt();
|
||||||
int y = args[2].asInt();
|
int y = args[2].asInt();
|
||||||
graphics.drawString(args[0].asString(), x, y);
|
graphics.drawString(args[0].asString(), x, y);
|
||||||
|
@ -69,7 +69,7 @@ public final class files implements Module {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length < 1) throw new ArgumentsMismatchException("At least one argument expected");
|
Arguments.checkAtLeast(1, args.length);
|
||||||
|
|
||||||
final File file = new File(args[0].asString());
|
final File file = new File(args[0].asString());
|
||||||
try {
|
try {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
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.*;
|
||||||
|
|
||||||
@ -8,8 +7,7 @@ public final class functional_combine implements Function {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length < 1) throw new ArgumentsMismatchException("At least one arg expected");
|
Arguments.checkAtLeast(1, args.length);
|
||||||
|
|
||||||
Function result = null;
|
Function result = null;
|
||||||
for (Value arg : args) {
|
for (Value arg : args) {
|
||||||
if (arg.type() != Types.FUNCTION) {
|
if (arg.type() != Types.FUNCTION) {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
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.*;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -12,11 +11,11 @@ public final class functional_filter implements Function {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length < 2) throw new ArgumentsMismatchException("At least two args expected");
|
Arguments.check(2, args.length);
|
||||||
|
|
||||||
if (args[1].type() != Types.FUNCTION) {
|
if (args[1].type() != Types.FUNCTION) {
|
||||||
throw new TypeException("Function expected in second arg");
|
throw new TypeException("Function expected in second argument");
|
||||||
}
|
}
|
||||||
|
|
||||||
final Value container = args[0];
|
final Value container = args[0];
|
||||||
final Function consumer = ((FunctionValue) args[1]).getValue();
|
final Function consumer = ((FunctionValue) args[1]).getValue();
|
||||||
if (container.type() == Types.ARRAY) {
|
if (container.type() == Types.ARRAY) {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
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.*;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -10,8 +9,7 @@ public final class functional_flatmap implements Function {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length < 2) throw new ArgumentsMismatchException("At least two arguments expected");
|
Arguments.check(2, args.length);
|
||||||
|
|
||||||
if (args[0].type() != Types.ARRAY) {
|
if (args[0].type() != Types.ARRAY) {
|
||||||
throw new TypeException("Array expected in first argument");
|
throw new TypeException("Array expected in first argument");
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
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.*;
|
||||||
|
|
||||||
@ -10,7 +9,7 @@ public final class functional_foreach implements Function {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length != 2) throw new ArgumentsMismatchException("Two args expected");
|
Arguments.check(2, args.length);
|
||||||
|
|
||||||
if (args[1].type() != Types.FUNCTION) {
|
if (args[1].type() != Types.FUNCTION) {
|
||||||
throw new TypeException("Function expected in second arg");
|
throw new TypeException("Function expected in second arg");
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
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.*;
|
||||||
|
|
||||||
@ -10,7 +9,7 @@ public final class functional_map implements Function {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length < 2) throw new ArgumentsMismatchException("At least two args expected");
|
Arguments.checkOrOr(2, 3, args.length);
|
||||||
|
|
||||||
final Value container = args[0];
|
final Value container = args[0];
|
||||||
if (container.type() == Types.ARRAY) {
|
if (container.type() == Types.ARRAY) {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
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.*;
|
||||||
|
|
||||||
@ -10,10 +9,10 @@ public final class functional_reduce implements Function {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length != 3) throw new ArgumentsMismatchException("Three args expected");
|
Arguments.check(3, args.length);
|
||||||
|
|
||||||
if (args[2].type() != Types.FUNCTION) {
|
if (args[2].type() != Types.FUNCTION) {
|
||||||
throw new TypeException("Function expected in third arg");
|
throw new TypeException("Function expected in third argument");
|
||||||
}
|
}
|
||||||
final Value container = args[0];
|
final Value container = args[0];
|
||||||
final Value identity = args[1];
|
final Value identity = args[1];
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
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.*;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@ -9,8 +8,7 @@ public final class functional_sortby implements Function {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length != 2) throw new ArgumentsMismatchException("Two arguments expected");
|
Arguments.check(2, args.length);
|
||||||
|
|
||||||
if (args[0].type() != Types.ARRAY) {
|
if (args[0].type() != Types.ARRAY) {
|
||||||
throw new TypeException("Array expected in first argument");
|
throw new TypeException("Array expected in first argument");
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,7 @@ public final class http_http implements Function {
|
|||||||
return process(url, method, args[2], (MapValue) args[3], (FunctionValue) args[4]);
|
return process(url, method, args[2], (MapValue) args[3], (FunctionValue) args[4]);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
throw new ArgumentsMismatchException("Wrong number of arguments");
|
throw new ArgumentsMismatchException("From 1 to 5 arguments expected, got " + args.length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
import com.annimon.ownlang.lib.Arguments;
|
||||||
import com.annimon.ownlang.lib.Function;
|
import com.annimon.ownlang.lib.Function;
|
||||||
import com.annimon.ownlang.lib.StringValue;
|
import com.annimon.ownlang.lib.StringValue;
|
||||||
import com.annimon.ownlang.lib.Value;
|
import com.annimon.ownlang.lib.Value;
|
||||||
@ -11,7 +11,7 @@ public final class http_urlencode implements Function {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length == 0) throw new ArgumentsMismatchException("At least one arg expected");
|
Arguments.checkOrOr(1, 2, args.length);
|
||||||
|
|
||||||
String charset = "UTF-8";
|
String charset = "UTF-8";
|
||||||
if (args.length >= 2) {
|
if (args.length >= 2) {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import org.json.*;
|
import org.json.*;
|
||||||
@ -9,7 +8,7 @@ public final class json_decode implements Function {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length != 1) throw new ArgumentsMismatchException("One argument expected");
|
Arguments.check(1, args.length);
|
||||||
try {
|
try {
|
||||||
final String jsonRaw = args[0].asString();
|
final String jsonRaw = args[0].asString();
|
||||||
final Object root = new JSONTokener(jsonRaw).nextValue();
|
final Object root = new JSONTokener(jsonRaw).nextValue();
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import org.json.*;
|
import org.json.*;
|
||||||
@ -9,7 +8,7 @@ public final class json_encode implements Function {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length != 1) throw new ArgumentsMismatchException("One argument expected");
|
Arguments.check(1, args.length);
|
||||||
try {
|
try {
|
||||||
final Object root = process(args[0]);
|
final Object root = process(args[0]);
|
||||||
final String jsonRaw = JSONObject.valueToString(root);
|
final String jsonRaw = JSONObject.valueToString(root);
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
|
|
||||||
public final class robot_exec implements Function {
|
public final class robot_exec implements Function {
|
||||||
@ -15,7 +14,7 @@ public final class robot_exec implements Function {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length == 0) throw new ArgumentsMismatchException("At least one argument expected");
|
Arguments.checkAtLeast(1, args.length);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
final Process process;
|
final Process process;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
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;
|
||||||
@ -11,8 +11,7 @@ public final class robot_toclipboard implements Function {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length != 1) throw new ArgumentsMismatchException("One argument expected");
|
Arguments.check(1, args.length);
|
||||||
|
|
||||||
Toolkit.getDefaultToolkit().getSystemClipboard()
|
Toolkit.getDefaultToolkit().getSystemClipboard()
|
||||||
.setContents(new StringSelection(args[0].asString()), null);
|
.setContents(new StringSelection(args[0].asString()), null);
|
||||||
return NumberValue.ZERO;
|
return NumberValue.ZERO;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
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.*;
|
||||||
|
|
||||||
@ -8,7 +7,7 @@ public final class std_arrayCombine implements Function {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length != 2) throw new ArgumentsMismatchException("Two arguments expected");
|
Arguments.check(2, args.length);
|
||||||
if (args[0].type() != Types.ARRAY) {
|
if (args[0].type() != Types.ARRAY) {
|
||||||
throw new TypeException("Array expected in first argument");
|
throw new TypeException("Array expected in first argument");
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
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.*;
|
||||||
|
|
||||||
@ -8,7 +7,7 @@ public final class std_arrayKeyExists implements Function {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length != 2) throw new ArgumentsMismatchException("Two arguments expected");
|
Arguments.check(2, args.length);
|
||||||
if (args[1].type() != Types.MAP) {
|
if (args[1].type() != Types.MAP) {
|
||||||
throw new TypeException("Map expected in second argument");
|
throw new TypeException("Map expected in second argument");
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
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.*;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -11,7 +10,7 @@ public final class std_arrayKeys implements Function {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length != 1) throw new ArgumentsMismatchException("One argument expected");
|
Arguments.check(1, args.length);
|
||||||
if (args[0].type() != Types.MAP) {
|
if (args[0].type() != Types.MAP) {
|
||||||
throw new TypeException("Map expected in first argument");
|
throw new TypeException("Map expected in first argument");
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
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.*;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -11,7 +10,7 @@ public final class std_arrayValues implements Function {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length != 1) throw new ArgumentsMismatchException("One argument expected");
|
Arguments.check(1, args.length);
|
||||||
if (args[0].type() != Types.MAP) {
|
if (args[0].type() != Types.MAP) {
|
||||||
throw new TypeException("Map expected in first argument");
|
throw new TypeException("Map expected in first argument");
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,12 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
|
|
||||||
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) {
|
||||||
if (args.length != 2) throw new ArgumentsMismatchException("Two arguments expected");
|
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();
|
||||||
|
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
|
|
||||||
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) {
|
||||||
if (args.length < 2 || args.length > 3) throw new ArgumentsMismatchException("Two or three arguments expected");
|
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();
|
||||||
|
@ -8,7 +8,7 @@ public final class std_join implements Function {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length < 1) throw new ArgumentsMismatchException("At least one argument expected");
|
Arguments.checkRange(1, 4, args.length);
|
||||||
if (args[0].type() != Types.ARRAY) {
|
if (args[0].type() != Types.ARRAY) {
|
||||||
throw new TypeException("Array expected in first argument");
|
throw new TypeException("Array expected in first argument");
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
|
|
||||||
public final class std_lastindexof implements Function {
|
public final class std_lastindexof implements Function {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length < 2 || args.length > 3) throw new ArgumentsMismatchException("Two or three arguments expected");
|
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();
|
||||||
|
@ -1,16 +1,15 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
|
|
||||||
public final class std_length implements Function {
|
public final class std_length implements Function {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length == 0) throw new ArgumentsMismatchException("At least one arg expected");
|
Arguments.check(1, args.length);
|
||||||
|
|
||||||
final Value val = args[0];
|
final Value val = args[0];
|
||||||
int length;
|
final int length;
|
||||||
switch (val.type()) {
|
switch (val.type()) {
|
||||||
case Types.ARRAY:
|
case Types.ARRAY:
|
||||||
length = ((ArrayValue) val).size();
|
length = ((ArrayValue) val).size();
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
|
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;
|
||||||
@ -12,6 +13,7 @@ public final class std_rand implements Function {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
|
Arguments.checkRange(0, 2, args.length);
|
||||||
if (args.length == 0) return new NumberValue(RND.nextDouble());
|
if (args.length == 0) return new NumberValue(RND.nextDouble());
|
||||||
|
|
||||||
int from = 0;
|
int from = 0;
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
|
|
||||||
public final class std_replace implements Function {
|
public final class std_replace implements Function {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length != 3) throw new ArgumentsMismatchException("Three arguments expected");
|
Arguments.check(3, args.length);
|
||||||
|
|
||||||
final String input = args[0].asString();
|
final String input = args[0].asString();
|
||||||
final String target = args[1].asString();
|
final String target = args[1].asString();
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
|
|
||||||
public final class std_replaceall implements Function {
|
public final class std_replaceall implements Function {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length != 3) throw new ArgumentsMismatchException("Three arguments expected");
|
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();
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
|
|
||||||
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) {
|
||||||
if (args.length != 3) throw new ArgumentsMismatchException("Three arguments expected");
|
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();
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
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;
|
||||||
@ -9,7 +9,7 @@ public final class std_sleep implements Function {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length != 1) throw new ArgumentsMismatchException("One argument expected");
|
Arguments.check(1, args.length);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Thread.sleep((long) args[0].asNumber());
|
Thread.sleep((long) args[0].asNumber());
|
||||||
|
@ -9,7 +9,7 @@ public final class std_sort implements Function {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length < 1) throw new ArgumentsMismatchException("At least one argument expected");
|
Arguments.checkAtLeast(1, args.length);
|
||||||
if (args[0].type() != Types.ARRAY) {
|
if (args[0].type() != Types.ARRAY) {
|
||||||
throw new TypeException("Array expected in first argument");
|
throw new TypeException("Array expected in first argument");
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
|
|
||||||
public final class std_split implements Function {
|
public final class std_split implements Function {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length < 2 || args.length > 3) throw new ArgumentsMismatchException("Two or three arguments expected");
|
Arguments.checkOrOr(2, 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();
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
|
|
||||||
public final class std_sprintf implements Function {
|
public final class std_sprintf implements Function {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length < 1) throw new ArgumentsMismatchException("At least one argument expected");
|
Arguments.checkAtLeast(1, args.length);
|
||||||
|
|
||||||
final String format = args[0].asString();
|
final String format = args[0].asString();
|
||||||
final Object[] values = new Object[args.length - 1];
|
final Object[] values = new Object[args.length - 1];
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
|
|
||||||
public final class std_substring implements Function {
|
public final class std_substring implements Function {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length < 2 || args.length > 3) throw new ArgumentsMismatchException("Two or three arguments expected");
|
Arguments.checkOrOr(2, 3, args.length);
|
||||||
|
|
||||||
final String input = args[0].asString();
|
final String input = args[0].asString();
|
||||||
final int startIndex = args[1].asInt();
|
final int startIndex = args[1].asInt();
|
||||||
|
@ -1,16 +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.exceptions.ArgumentsMismatchException;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
|
|
||||||
public final class std_thread implements Function {
|
public final class std_thread implements Function {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
// Создаём новый поток и передаём параметры, если есть.
|
Arguments.checkAtLeast(1, args.length);
|
||||||
// Функция может передаваться как напрямую, так и по имени
|
|
||||||
if (args.length == 0) throw new ArgumentsMismatchException("At least one arg expected");
|
|
||||||
|
|
||||||
Function body;
|
Function body;
|
||||||
if (args[0].type() == Types.FUNCTION) {
|
if (args[0].type() == Types.FUNCTION) {
|
||||||
|
@ -1,14 +1,12 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
|
|
||||||
public final class std_tochar implements Function {
|
public final class std_tochar implements Function {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length != 1) throw new ArgumentsMismatchException("One argument expected");
|
Arguments.check(1, args.length);
|
||||||
|
|
||||||
return new StringValue(String.valueOf((char) args[0].asInt()));
|
return new StringValue(String.valueOf((char) args[0].asInt()));
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,14 +1,12 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
|
|
||||||
public final class std_tolowercase implements Function {
|
public final class std_tolowercase implements Function {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length != 1) throw new ArgumentsMismatchException("One argument expected");
|
Arguments.check(1, args.length);
|
||||||
|
|
||||||
return new StringValue(args[0].asString().toLowerCase());
|
return new StringValue(args[0].asString().toLowerCase());
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,14 +1,12 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
|
|
||||||
public final class std_touppercase implements Function {
|
public final class std_touppercase implements Function {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length != 1) throw new ArgumentsMismatchException("One argument expected");
|
Arguments.check(1, args.length);
|
||||||
|
|
||||||
return new StringValue(args[0].asString().toUpperCase());
|
return new StringValue(args[0].asString().toUpperCase());
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,14 +1,12 @@
|
|||||||
package com.annimon.ownlang.lib.modules.functions;
|
package com.annimon.ownlang.lib.modules.functions;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
|
||||||
import com.annimon.ownlang.lib.*;
|
import com.annimon.ownlang.lib.*;
|
||||||
|
|
||||||
public final class std_trim implements Function {
|
public final class std_trim implements Function {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
if (args.length != 1) throw new ArgumentsMismatchException("One argument expected");
|
Arguments.check(1, args.length);
|
||||||
|
|
||||||
return new StringValue(args[0].asString().trim());
|
return new StringValue(args[0].asString().trim());
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules;
|
package com.annimon.ownlang.lib.modules;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
|
||||||
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;
|
||||||
@ -58,14 +57,14 @@ public final class math implements Module {
|
|||||||
|
|
||||||
private static Function functionConvert(DoubleUnaryOperator op) {
|
private static Function functionConvert(DoubleUnaryOperator op) {
|
||||||
return args -> {
|
return args -> {
|
||||||
if (args.length != 1) throw new ArgumentsMismatchException("One arg expected");
|
Arguments.check(1, args.length);
|
||||||
return doubleToNumber.apply(op.applyAsDouble(args[0].asNumber()));
|
return doubleToNumber.apply(op.applyAsDouble(args[0].asNumber()));
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Function biFunctionConvert(DoubleBinaryOperator op) {
|
private static Function biFunctionConvert(DoubleBinaryOperator op) {
|
||||||
return args -> {
|
return args -> {
|
||||||
if (args.length != 2) throw new ArgumentsMismatchException("Two args expected");
|
Arguments.check(2, args.length);
|
||||||
return doubleToNumber.apply(op.applyAsDouble(args[0].asNumber(), args[1].asNumber()));
|
return doubleToNumber.apply(op.applyAsDouble(args[0].asNumber(), args[1].asNumber()));
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,7 @@ public final class ounit implements Module {
|
|||||||
private static class assertEquals implements Function {
|
private static class assertEquals implements Function {
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
|
Arguments.check(2, args.length);
|
||||||
if (args[0].equals(args[1])) return NumberValue.ONE;
|
if (args[0].equals(args[1])) return NumberValue.ONE;
|
||||||
throw new OUnitAssertionException("Values are not equals: "
|
throw new OUnitAssertionException("Values are not equals: "
|
||||||
+ "1: " + args[0] + ", 2: " + args[1]);
|
+ "1: " + args[0] + ", 2: " + args[1]);
|
||||||
@ -37,6 +38,7 @@ public final class ounit implements Module {
|
|||||||
private static class assertNotEquals implements Function {
|
private static class assertNotEquals implements Function {
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
|
Arguments.check(2, args.length);
|
||||||
if (!args[0].equals(args[1])) return NumberValue.ONE;
|
if (!args[0].equals(args[1])) return NumberValue.ONE;
|
||||||
throw new OUnitAssertionException("Values are equals: " + args[0]);
|
throw new OUnitAssertionException("Values are equals: " + args[0]);
|
||||||
}
|
}
|
||||||
@ -45,6 +47,7 @@ public final class ounit implements Module {
|
|||||||
private static class assertSameType implements Function {
|
private static class assertSameType implements Function {
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
|
Arguments.check(2, args.length);
|
||||||
if (args[0].type() == args[1].type()) return NumberValue.ONE;
|
if (args[0].type() == args[1].type()) return NumberValue.ONE;
|
||||||
throw new OUnitAssertionException("Types mismatch. "
|
throw new OUnitAssertionException("Types mismatch. "
|
||||||
+ "1: " + Types.typeToString(args[0].type())
|
+ "1: " + Types.typeToString(args[0].type())
|
||||||
@ -55,6 +58,7 @@ public final class ounit implements Module {
|
|||||||
private static class assertTrue implements Function {
|
private static class assertTrue implements Function {
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
|
Arguments.check(1, args.length);
|
||||||
if (args[0].asInt() != 0) return NumberValue.ONE;
|
if (args[0].asInt() != 0) return NumberValue.ONE;
|
||||||
throw new OUnitAssertionException("Expected true, but found false.");
|
throw new OUnitAssertionException("Expected true, but found false.");
|
||||||
}
|
}
|
||||||
@ -63,6 +67,7 @@ public final class ounit implements Module {
|
|||||||
private static class assertFalse implements Function {
|
private static class assertFalse implements Function {
|
||||||
@Override
|
@Override
|
||||||
public Value execute(Value... args) {
|
public Value execute(Value... args) {
|
||||||
|
Arguments.check(1, args.length);
|
||||||
if (args[0].asInt() == 0) return NumberValue.ONE;
|
if (args[0].asInt() == 0) return NumberValue.ONE;
|
||||||
throw new OUnitAssertionException("Expected false, but found true.");
|
throw new OUnitAssertionException("Expected false, but found true.");
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.annimon.ownlang.lib.modules;
|
package com.annimon.ownlang.lib.modules;
|
||||||
|
|
||||||
import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
|
|
||||||
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;
|
||||||
@ -43,14 +42,14 @@ public final class robot implements Module {
|
|||||||
Functions.set("mouseRelease", convertFunction(awtRobot::mouseRelease));
|
Functions.set("mouseRelease", convertFunction(awtRobot::mouseRelease));
|
||||||
Functions.set("mouseWheel", convertFunction(awtRobot::mouseWheel));
|
Functions.set("mouseWheel", convertFunction(awtRobot::mouseWheel));
|
||||||
Functions.set("mouseMove", (args) -> {
|
Functions.set("mouseMove", (args) -> {
|
||||||
if (args.length != 2) throw new ArgumentsMismatchException("Two arguments expected");
|
Arguments.check(2, args.length);
|
||||||
try {
|
try {
|
||||||
awtRobot.mouseMove(args[0].asInt(), args[1].asInt());
|
awtRobot.mouseMove(args[0].asInt(), args[1].asInt());
|
||||||
} catch (IllegalArgumentException iae) { }
|
} catch (IllegalArgumentException iae) { }
|
||||||
return NumberValue.ZERO;
|
return NumberValue.ZERO;
|
||||||
});
|
});
|
||||||
Functions.set("typeText", (args) -> {
|
Functions.set("typeText", (args) -> {
|
||||||
if (args.length != 1) throw new ArgumentsMismatchException("One argument expected");
|
Arguments.check(1, args.length);
|
||||||
try {
|
try {
|
||||||
typeText(args[0].asString());
|
typeText(args[0].asString());
|
||||||
} catch (IllegalArgumentException iae) { }
|
} catch (IllegalArgumentException iae) { }
|
||||||
@ -87,7 +86,7 @@ public final class robot implements Module {
|
|||||||
|
|
||||||
private static Function convertFunction(RobotIntConsumer consumer) {
|
private static Function convertFunction(RobotIntConsumer consumer) {
|
||||||
return args -> {
|
return args -> {
|
||||||
if (args.length != 1) throw new ArgumentsMismatchException("One argument expected");
|
Arguments.check(1, args.length);
|
||||||
try {
|
try {
|
||||||
consumer.accept(args[0].asInt());
|
consumer.accept(args[0].asInt());
|
||||||
} catch (IllegalArgumentException iae) { }
|
} catch (IllegalArgumentException iae) { }
|
||||||
|
Loading…
Reference in New Issue
Block a user