1
0
mirror of https://github.com/quinton-ashley/java2js synced 2024-12-29 10:11:54 +01:00
java2js/jdk/java/io/PrintStream.js

68 lines
1.4 KiB
JavaScript
Raw Permalink Normal View History

2021-09-24 00:36:29 -05:00
jdk.imports['java.io.PrintStream'].load = async () => {
2022-01-14 12:41:43 -05:00
const MessageDigest = await jdk.import('java.security.MessageDigest');
2021-09-23 01:41:44 -05:00
class PrintStream {
constructor() {
this.log = '';
this.onPrint = () => {};
}
reset() {
this.log = '';
}
_onPrint(length) {
this.onPrint(length);
}
2022-01-14 12:41:43 -05:00
_printArray(arr) {
2022-01-17 08:04:32 -05:00
console.error(
'ERROR: In Java, printing a primitive array prints the memory location of that array in the Java Virtual Machine. To print the contents of the array use a loop!'
);
2022-01-14 12:41:43 -05:00
let md = MessageDigest.getInstance();
let str = '[Ljava.lang.';
2022-02-01 21:32:29 -05:00
let hash = md.digest(arr.join(',')).slice(0, 8);
2022-01-14 12:41:43 -05:00
if (arr.length == 0) {
return str + 'Array;@' + hash;
}
if (typeof arr[0] == 'string') {
return str + 'String;@' + hash;
} else {
return str + 'Number;@' + hash;
2021-09-23 01:41:44 -05:00
}
}
2022-01-14 12:41:43 -05:00
_print(arg, ln) {
let str;
if (Array.isArray(arg)) {
str = this._printArray(arg);
2022-02-01 21:32:29 -05:00
} else if (typeof arg == 'undefined' || arg == null) {
str = 'null';
2022-01-14 12:41:43 -05:00
} else {
str = arg.toString();
}
if (ln) str += '\n';
2021-09-23 01:41:44 -05:00
this.log += str;
2022-02-18 18:35:09 -05:00
if (jdk.log) {
jdk.log.value += str;
2021-09-23 01:41:44 -05:00
}
2022-02-18 18:35:09 -05:00
this._onPrint(str.length);
2022-01-14 12:41:43 -05:00
return str;
}
print(arg) {
return this._print(arg);
}
println(arg) {
return this._print(arg, true);
2021-09-23 01:41:44 -05:00
}
printf(format, ...args) {
2022-02-01 21:32:29 -05:00
let str = String.format(format, ...args);
2022-01-14 12:41:43 -05:00
return this._print(str);
2021-09-23 01:41:44 -05:00
}
}
2021-09-23 23:26:42 -05:00
jdk.java.io.PrintStream = PrintStream;
2021-09-23 01:41:44 -05:00
};