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