I haven’t really looked at anything yet; I figured this might be small enough to be a first contribution, but I first wanted to ask if it would be welcome before I spent a bunch of time on it.
I really like the terminal-size aware printing of vectors and matrices, and I want higher dimensional arrays to be pretty like that as well. For 3, 4, 5, and 6 -d arrays, what would you say to:
julia> collect(reshape(1:360, 24, 15))
24×15 Matrix{Int64}:
1 25 49 73 97 121 145 169 193 217 241 265 289 313 337
2 26 50 74 98 122 146 170 194 218 242 266 290 314 338
3 27 51 75 99 123 147 171 195 219 243 267 291 315 339
4 28 52 76 100 124 148 172 196 220 244 268 292 316 340
5 29 53 77 101 125 149 173 197 221 245 269 293 317 341
6 30 54 78 102 126 150 174 198 222 246 270 294 318 342
7 31 55 79 103 127 151 175 199 223 247 271 295 319 343
8 32 56 80 104 128 152 176 200 224 248 272 296 320 344
9 33 57 81 105 129 153 177 201 225 249 273 297 321 345
10 34 58 82 106 130 154 178 202 226 250 274 298 322 346
11 35 59 83 107 131 155 179 203 227 251 275 299 323 347
12 36 60 84 108 132 156 180 204 228 252 276 300 324 348
13 37 61 85 109 133 157 181 205 229 253 277 301 325 349
14 38 62 86 110 134 158 182 206 230 254 278 302 326 350
15 39 63 87 111 135 159 183 207 231 255 279 303 327 351
16 40 64 88 112 136 160 184 208 232 256 280 304 328 352
17 41 65 89 113 137 161 185 209 233 257 281 305 329 353
18 42 66 90 114 138 162 186 210 234 258 282 306 330 354
19 43 67 91 115 139 163 187 211 235 259 283 307 331 355
20 44 68 92 116 140 164 188 212 236 260 284 308 332 356
21 45 69 93 117 141 165 189 213 237 261 285 309 333 357
22 46 70 94 118 142 166 190 214 238 262 286 310 334 358
23 47 71 95 119 143 167 191 215 239 263 287 311 335 359
24 48 72 96 120 144 168 192 216 240 264 288 312 336 360
julia> collect(reshape(1:360, 12, 10, 3))
12×10×3 Array{Int64, 3}:
1 13 25 37 49 61 73 85 97 109
2 14 26 38 50 62 74 86 98 110
3 15 27 39 51 63 75 87 99 111
4 16 28 40 52 64 76 88 100 112
5 17 29 41 53 65 77 89 101 113
6 18 30 42 54 66 78 90 102 114
7 19 31 43 55 67 79 91 103 115
8 20 32 44 56 68 80 92 104 116
9 21 33 45 57 69 81 93 105 117
10 22 34 46 58 70 82 94 106 118
11 23 35 47 59 71 83 95 107 119
12 24 36 48 60 72 84 96 108 120
────────────────────────────────────────────────
121 133 145 157 169 181 193 205 217 229
122 134 146 158 170 182 194 206 218 230
123 135 147 159 171 183 195 207 219 231
124 136 148 160 172 184 196 208 220 232
125 137 149 161 173 185 197 209 221 233
126 138 150 162 174 186 198 210 222 234
127 139 151 163 175 187 199 211 223 235
128 140 152 164 176 188 200 212 224 236
129 141 153 165 177 189 201 213 225 237
130 142 154 166 178 190 202 214 226 238
131 143 155 167 179 191 203 215 227 239
132 144 156 168 180 192 204 216 228 240
────────────────────────────────────────────────
241 253 265 277 289 301 313 325 337 349
242 254 266 278 290 302 314 326 338 350
243 255 267 279 291 303 315 327 339 351
244 256 268 280 292 304 316 328 340 352
245 257 269 281 293 305 317 329 341 353
246 258 270 282 294 306 318 330 342 354
247 259 271 283 295 307 319 331 343 355
248 260 272 284 296 308 320 332 344 356
249 261 273 285 297 309 321 333 345 357
250 262 274 286 298 310 322 334 346 358
251 263 275 287 299 311 323 335 347 359
252 264 276 288 300 312 324 336 348 360
julia> collect(reshape(1:360, 8, 3, 5, 3))
8×3×5×3 Array{Int64, 4}:
1 9 17 │ 121 129 137 │ 241 249 257
2 10 18 │ 122 130 138 │ 242 250 258
3 11 19 │ 123 131 139 │ 243 251 259
4 12 20 │ 124 132 140 │ 244 252 260
5 13 21 │ 125 133 141 │ 245 253 261
6 14 22 │ 126 134 142 │ 246 254 262
7 15 23 │ 127 135 143 │ 247 255 263
8 16 24 │ 128 136 144 │ 248 256 264
──────────────┼───────────────┼──────────────
25 33 41 │ 145 153 161 │ 265 273 281
26 34 42 │ 146 154 162 │ 266 274 282
27 35 43 │ 147 155 163 │ 267 275 283
28 36 44 │ 148 156 164 │ 268 276 284
29 37 45 │ 149 157 165 │ 269 277 285
30 38 46 │ 150 158 166 │ 270 278 286
31 39 47 │ 151 159 167 │ 271 279 287
32 40 48 │ 152 160 168 │ 272 280 288
──────────────┼───────────────┼──────────────
49 57 65 │ 169 177 185 │ 289 297 305
50 58 66 │ 170 178 186 │ 290 298 306
51 59 67 │ 171 179 187 │ 291 299 307
52 60 68 │ 172 180 188 │ 292 300 308
53 61 69 │ 173 181 189 │ 293 301 309
54 62 70 │ 174 182 190 │ 294 302 310
55 63 71 │ 175 183 191 │ 295 303 311
56 64 72 │ 176 184 192 │ 296 304 312
──────────────┼───────────────┼──────────────
73 81 89 │ 193 201 209 │ 313 321 329
74 82 90 │ 194 202 210 │ 314 322 330
75 83 91 │ 195 203 211 │ 315 323 331
76 84 92 │ 196 204 212 │ 316 324 332
77 85 93 │ 197 205 213 │ 317 325 333
78 86 94 │ 198 206 214 │ 318 326 334
79 87 95 │ 199 207 215 │ 319 327 335
80 88 96 │ 200 208 216 │ 320 328 336
──────────────┼───────────────┼──────────────
97 105 113 │ 217 225 233 │ 337 345 353
98 106 114 │ 218 226 234 │ 338 346 354
99 107 115 │ 219 227 235 │ 339 347 355
100 108 116 │ 220 228 236 │ 340 348 356
101 109 117 │ 221 229 237 │ 341 349 357
102 110 118 │ 222 230 238 │ 342 350 358
103 111 119 │ 223 231 239 │ 343 351 359
104 112 120 │ 224 232 240 │ 344 352 360
julia> collect(reshape(1:360, 5, 4, 3, 3, 2))
5×4×3×3×2 Array{Int64, 5}:
1 6 11 16 │ 61 66 71 76 │ 121 126 131 136
2 7 12 17 │ 62 67 72 77 │ 122 127 132 137
3 8 13 18 │ 63 68 73 78 │ 123 128 133 138
4 9 14 19 │ 64 69 74 79 │ 124 129 134 139
5 10 15 20 │ 65 70 75 80 │ 125 130 135 140
───────────────────┼────────────────────┼───────────────────
21 26 31 36 │ 81 86 91 96 │ 141 146 151 156
22 27 32 37 │ 82 87 92 97 │ 142 147 152 157
23 28 33 38 │ 83 88 93 98 │ 143 148 153 158
24 29 34 39 │ 84 89 94 99 │ 144 149 154 159
25 30 35 40 │ 85 90 95 100 │ 145 150 155 160
───────────────────┼────────────────────┼───────────────────
41 46 51 56 │ 101 106 111 116 │ 161 166 171 176
42 47 52 57 │ 102 107 112 117 │ 162 167 172 177
43 48 53 58 │ 103 108 113 118 │ 163 168 173 178
44 49 54 59 │ 104 109 114 119 │ 164 169 174 179
45 50 55 60 │ 105 110 115 120 │ 165 170 175 180
═══════════════════╪════════════════════╪═══════════════════
181 186 191 196 │ 241 246 251 256 │ 301 306 311 316
182 187 192 197 │ 242 247 252 257 │ 302 307 312 317
183 188 193 198 │ 243 248 253 258 │ 303 308 313 318
184 189 194 199 │ 244 249 254 259 │ 304 309 314 319
185 190 195 200 │ 245 250 255 260 │ 305 310 315 320
───────────────────┼────────────────────┼───────────────────
201 206 211 216 │ 261 266 271 276 │ 321 326 331 336
202 207 212 217 │ 262 267 272 277 │ 322 327 332 337
203 208 213 218 │ 263 268 273 278 │ 323 328 333 338
204 209 214 219 │ 264 269 274 279 │ 324 329 334 339
205 210 215 220 │ 265 270 275 280 │ 325 330 335 340
───────────────────┼────────────────────┼───────────────────
221 226 231 236 │ 281 286 291 296 │ 341 346 351 356
222 227 232 237 │ 282 287 292 297 │ 342 347 352 357
223 228 233 238 │ 283 288 293 298 │ 343 348 353 358
224 229 234 239 │ 284 289 294 299 │ 344 349 354 359
225 230 235 240 │ 285 290 295 300 │ 345 350 355 360
julia> collect(reshape(1:360, 5, 3, 3, 2, 2, 2))
5×3×3×2×2×2 Array{Int64, 6}:
1 6 11 │ 46 51 56 ║ 181 186 191 │ 226 231 236
2 7 12 │ 47 52 57 ║ 182 187 192 │ 227 232 237
3 8 13 │ 48 53 58 ║ 183 188 193 │ 228 233 238
4 9 14 │ 49 54 59 ║ 184 189 194 │ 229 234 239
5 10 15 │ 50 55 60 ║ 185 190 195 │ 230 235 240
──────────────┼───────────────╫───────────────┼──────────────
16 21 26 │ 61 66 71 ║ 196 201 206 │ 241 246 251
17 22 27 │ 62 67 72 ║ 197 202 207 │ 242 247 252
18 23 28 │ 63 68 73 ║ 198 203 208 │ 243 248 253
19 24 29 │ 64 69 74 ║ 199 204 209 │ 244 249 254
20 25 30 │ 65 70 75 ║ 200 205 210 │ 245 250 255
──────────────┼───────────────╫───────────────┼──────────────
31 36 41 │ 76 81 86 ║ 211 216 221 │ 256 261 266
32 37 42 │ 77 82 87 ║ 212 217 222 │ 257 262 267
33 38 43 │ 78 83 88 ║ 213 218 223 │ 258 263 268
34 39 44 │ 79 84 89 ║ 214 219 224 │ 259 264 269
35 40 45 │ 80 85 90 ║ 215 220 225 │ 260 265 270
══════════════╪═══════════════╬═══════════════╪══════════════
91 96 101 │ 136 141 146 ║ 271 276 281 │ 316 321 326
92 97 102 │ 137 142 147 ║ 272 277 282 │ 317 322 327
93 98 103 │ 138 143 148 ║ 273 278 283 │ 318 323 328
94 99 104 │ 139 144 149 ║ 274 279 284 │ 319 324 329
95 100 105 │ 140 145 150 ║ 275 280 285 │ 320 325 330
──────────────┼───────────────╫───────────────┼──────────────
106 111 116 │ 151 156 161 ║ 286 291 296 │ 331 336 341
107 112 117 │ 152 157 162 ║ 287 292 297 │ 332 337 342
108 113 118 │ 153 158 163 ║ 288 293 298 │ 333 338 343
109 114 119 │ 154 159 164 ║ 289 294 299 │ 334 339 344
110 115 120 │ 155 160 165 ║ 290 295 300 │ 335 340 345
──────────────┼───────────────╫───────────────┼──────────────
121 126 131 │ 166 171 176 ║ 301 306 311 │ 346 351 356
122 127 132 │ 167 172 177 ║ 302 307 312 │ 347 352 357
123 128 133 │ 168 173 178 ║ 303 308 313 │ 348 353 358
124 129 134 │ 169 174 179 ║ 304 309 314 │ 349 354 359
125 130 135 │ 170 175 180 ║ 305 310 315 │ 350 355 360
what I’m thinking is it checks if it can print on the screen, then falls back on the current method if it can’t fit everything.