mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 08:44:20 +03:00
Методы для создания ArrayValue из массива байт и строк
This commit is contained in:
parent
401d426163
commit
e4ec1fba18
@ -10,6 +10,24 @@ import java.util.List;
|
|||||||
* @author aNNiMON
|
* @author aNNiMON
|
||||||
*/
|
*/
|
||||||
public final class ArrayValue implements Value, Iterable<Value> {
|
public final class ArrayValue implements Value, Iterable<Value> {
|
||||||
|
|
||||||
|
public static ArrayValue of(byte[] array) {
|
||||||
|
final int size = array.length;
|
||||||
|
final ArrayValue result = new ArrayValue(size);
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
result.set(i, NumberValue.of(array[i]));
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ArrayValue of(String[] array) {
|
||||||
|
final int size = array.length;
|
||||||
|
final ArrayValue result = new ArrayValue(size);
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
result.set(i, new StringValue(array[i]));
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
public static ArrayValue add(ArrayValue array, Value value) {
|
public static ArrayValue add(ArrayValue array, Value value) {
|
||||||
final int last = array.elements.length;
|
final int last = array.elements.length;
|
||||||
|
@ -10,7 +10,6 @@ import java.io.DataOutputStream;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.FilenameFilter;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.io.OutputStreamWriter;
|
import java.io.OutputStreamWriter;
|
||||||
@ -124,13 +123,7 @@ public final class files implements Module {
|
|||||||
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 {
|
||||||
final String[] files = fileInfo.file.list();
|
return ArrayValue.of(fileInfo.file.list());
|
||||||
final int size = files.length;
|
|
||||||
final ArrayValue result = new ArrayValue(size);
|
|
||||||
for (int i = 0; i < size; i++) {
|
|
||||||
result.set(i, new StringValue(files[i]));
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -221,13 +214,7 @@ public final class files implements Module {
|
|||||||
}
|
}
|
||||||
baos.flush();
|
baos.flush();
|
||||||
baos.close();
|
baos.close();
|
||||||
final byte[] bytes = baos.toByteArray();
|
return ArrayValue.of(baos.toByteArray());
|
||||||
final int size = bytes.length;
|
|
||||||
final ArrayValue result = new ArrayValue(size);
|
|
||||||
for (int i = 0; i < size; i++) {
|
|
||||||
result.set(i, NumberValue.of(bytes[i]));
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,11 +13,6 @@ public final class std_split implements Function {
|
|||||||
final int limit = (args.length == 3) ? args[2].asInt() : 0;
|
final int limit = (args.length == 3) ? args[2].asInt() : 0;
|
||||||
|
|
||||||
final String[] parts = input.split(regex, limit);
|
final String[] parts = input.split(regex, limit);
|
||||||
final ArrayValue result = new ArrayValue(parts.length);
|
return ArrayValue.of(parts);
|
||||||
for (int i = 0; i < parts.length; i++) {
|
|
||||||
result.set(i, new StringValue(parts[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user