diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/cjs.bqn | 3 | ||||
| -rw-r--r-- | src/fmt.bqn | 54 |
2 files changed, 56 insertions, 1 deletions
diff --git a/src/cjs.bqn b/src/cjs.bqn index 6ed5c5ae..3645b71f 100755 --- a/src/cjs.bqn +++ b/src/cjs.bqn @@ -11,8 +11,9 @@ J ← ∾∾⟜(•UCS 10)¨ Fout ← ⟨L∾⟜25,L Fconst¨,L⟨⊑"fmd"⊸⊐,⊢,⊢,≠⟩⊸(L{𝕎𝕩}¨)¨⟩ {𝕎𝕩}¨ 0‿1‿3 ⊏ ⊢ Frun ← ("provide.concat("∾∾⟜")")⌾(1⊸⊑) Fout Long ← ∾ (1‿2/⟨" new Uint8Array("∾∾⟜")"⋄((•UCS 10)∾" ,")⊸∾⟩) {𝕎𝕩}¨ ⊢ -• ← (⊑"r"‿"c"⊐⊏)◶⟨ +• ← (⊑"r"‿"c"‿"fmt"⊐⊏)◶⟨ {𝕩⋄Long Frun {𝕩⊸↓⌾(1⊸⊑)Comp𝕨}´ •EX •path∾"pr.bqn"} {𝕩⋄Long Fout Comp J •LNS •path∾"c.bqn"} + {𝕩⋄Long Fout Comp J •LNS •path∾"fmt.bqn"} J L∘Fout∘Comp¨ ⟩ •args diff --git a/src/fmt.bqn b/src/fmt.bqn new file mode 100644 index 00000000..ae49a27d --- /dev/null +++ b/src/fmt.bqn @@ -0,0 +1,54 @@ +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↓≢𝕩 + (r Enframe 1 PadH PadV)⍟(1≠r) ≍ (c↑'"') ∾⎉k 𝕩 ∾⎉k ⌽⌾⥊c↑'"' + }‿{ + # Not homogeneous, or empty + (∨´0=≢)◶FmtMixed‿FmtEmpty 𝕩 + }‿{ + # All numbers + ¯1 FmtMixed 𝕩 + } 𝕩 + }‿FmtMixed + ¯1↓⥊ ∾⟜lf˘ F 𝕩 +} |
