blob: b7d755fb0338f4593dc337015b663ebb3ba221e0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
lf←'
'
{
F0←𝔽
PadV ← {
ls ← ¯1↓≢𝕩
p ← ⥊ +⎉¯1‿∞´ ×⌜˜`⌾⌽ (-1⌈ls)↑¨1
p ↩ 0⌾(¯1⊸⊑) p
Pad ← {i←/1+𝕨 ⋄ (¯1¨⌾((¬∊i)⊸/)i) ⊏ 𝕩∾(¯1⊑≢𝕩)⥊" "}
p (⊑0∊ls)◶⟨Pad,+´⊸↑⟩ ((×´ls)∾¯1⊑≢𝕩) ⥊ 𝕩
}⍟(2 < =)
PadH ← {
(𝕨/" ") (∾⎉1∾⎉1⊣) 𝕩
}
Pad ← PadH⟜PadV
Enf0 ← { ≍"⟨"∾(¯1↓1↓⊏𝕩)∾"⟩" }
Enframe ← {(1≠𝕨)∨(1≠≠𝕩)∨⊑2∊+`-˝"⟨⟩"=⌜⊏𝕩}◶Enf0‿{
l ← ¯1 ⊑ ≢𝕩
∾ ⟨ # "┼╒╛╪"
1‿l↑∾⟨"┌",(5⊸<)◶⟨⥊"·─"⊏˜1⌊⊢,F0⟩𝕨⟩
((4⌊0⌈𝕨-1)⊑"·╵╎┆┊")⌾⊑ 𝕩
(1∾-l)↑"┘"
⟩
}
FmtEmpty ← (0‿0≢≢)◶("┌┐"≍"└┘")‿(((2≠=)∨0=≠)◶{
'┐'⌾(0‿¯1⊸⊑) 2 Enframe 1 PadH " "¨𝕩
}‿{
≍"⟨⟩"∾˜(1<≠)◶⟨"",'⥊'⌾(¯1⊸⊑)·∾·∾⟜"‿"¨F0¨⟩≢𝕩
})
PaddingJoin ← {1 PaddingJoin 𝕩}⊘{
s ← ≢¨ 𝕩
w ← (0<=)◶⟨⥊,⌈˝⍟(=-1˜)⟩1⊑¨s
h ← ⌈˝⎉1⍟(0<=) ⊑¨s
∾⎉2 ≍⍟(0⌈2-=) (h ∾⌜ 𝕨×w¬(-𝕨×≠w)↑1) ↑¨ 𝕩
}
FmtMixed ← {
(=𝕩) Enframe 2 Pad 𝕨 PaddingJoin F¨𝕩
}
F ← (2⌊≡)◶(≍≤⟜∞◶⟨"'"⊸(∾∾⊣),F0⟩)‿{
num ← 𝕩≤∞ ⋄ r ← =𝕩
((≠(0⊸<+≤)+´)⥊num)◶{
# All characters
k ← ∞⍟(0⊸=) -≠ c ← ¯1↓≢𝕩
q ← '"'
𝕩 ↩ (1+q=⊢)⊸/⍟(k=∞) 𝕩
(r Enframe 1 PadH PadV)⍟(1≠r) ≍ (c↑q) ∾⎉k 𝕩 ∾⎉k ⌽⌾⥊c↑q
}‿{
# Not homogeneous, or empty
(∨´0=≢)◶FmtMixed‿FmtEmpty 𝕩
}‿{
# All numbers
¯1 FmtMixed 𝕩
} 𝕩
}‿FmtMixed
¯1↓⥊ ∾⟜lf˘ F 𝕩
}
|