// SPDX-License-Identifier: GPL-3.0-only // Copyright (c) 2022, Sylvain Huet, Ambermind // Minimacy (r) System fun _tableMaxRow(data)= let 0->len in ( for row in data do set len=max(len, arrayLength(row)); arrayCreate(len, 0) );; fun _tableMaxFieldWidth(data)= let _tableMaxRow(data) -> lens in ( for row in data do for v,i of row do let strLength(v) -> len in set lens[i] = max(lens[i], len); lens );; fun tablePrettyPrint(data)= let _tableMaxFieldWidth(data) -> lens in let head(data) -> header in for row,p in data do if row<>nil then ( for v,i of row do let strLength(v) -> len in echo ["|", strCreate((lens[i])-len, 32), v]; echoLn "|"; if header==row then ( for v of lens do echo ["|", strCreate(v, '-')]; echoLn "|"; ) ); data;;