initStdPrint method
Implementation
void initStdPrint({StdPrintCallback? impl}) {
final token = Token.synthesized('print');
final defPrint = FuncExpr.named(
token,
body: [],
args: [DeclArg(Token.synthesized('...', type: TokenType.kSpread))],
idParts: [RawExpr(token)],
);
exec() {
tostring(LuaObject e) {
final mm = e.readMetatable('__tostring')?.as<LuaObject>();
if (mm == null) {
return e.toString();
}
return callLuaFunction(mm, args: [e]).unpack();
}
impl?.call(findVarArgs()?.map(tostring).join(' ') ?? '');
}
defGlobal(LuaObject.func('print', defPrint, exec)).doc = LuaDoc(
category: catRuntime,
html: '''
Converts a lua object to a string and then
displays to console. See <a href="#tostring">tostring</a>.
''',
);
}