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
} ;