4k: Atom Printing

++co

Literal rendering engine

A door that contains arms that operate on the sample coin lot.

Accepts

Produces

lot is a ++coin.

Source

    ++  co  !.
      ~%  %co  ..co  ~
      =<  |_  lot/coin

Examples

        > < 3.nta
        { lot/{$many {$~ $ta @t} {$~ $ud @ud} $~}
          <10.cfg 4.jjn {rep/"" <402.arm 110.jyx 1.ztu $151>}>
        }
        >

++rear:co

Prepend & render as tape

Renders a coin lot as a tape prepended to the sample tape rom.

Accepts

Produces

rom is a pe

lot is a ++coin.

Source

          ++  rear  |=(rom/tape =>(.(rex rom) rend))

Examples

    > (~(rear co %$ %ux 200) "--ha")
    "0xc8--ha"

++rent:co

Render as span

Renders a coin lot as a span.

Accepts

Produces

lot is a ++coin.

Source

          ++  rent  `@ta`(rap 3 rend)

Examples

    > ~(rent co %$ %ux 200)
    ~.0xc8

    > `@t`~(rent co %$ %ux 200)
    '0xc8'

++rend:co

Render as tape

Renders a coin lot as a tape.

Accepts

Produces

lot is a ++coin.

Source

      ++  rend
        ^-  tape
        ?:  ?=($blob -.lot)
          ['~' '0' ((v-co 1) (jam p.lot))]
        ?:  ?=($many -.lot)
          :-  '.'
          |-  ^-  tape
          ?~   p.lot
            ['_' '_' rep]
          ['_' (weld (trip (wack rent(lot i.p.lot))) $(p.lot t.p.lot))]
        =+  [yed=(end 3 1 p.p.lot) hay=(cut 3 [1 1] p.p.lot)]
        |-  ^-  tape
        ?+    yed  (z-co q.p.lot)
            $c   ['~' '-' (weld (rip 3 (wood (tuft q.p.lot))) rep)]
            $d
          ?+    hay  (z-co q.p.lot)
              $a
            =+  yod=(yore q.p.lot)
            =>  ^+(. .(rep ?~(f.t.yod rep ['.' (s-co f.t.yod)])))
            =>  ^+  .
                %=    .
                    rep
                  ?:  &(=(~ f.t.yod) =(0 h.t.yod) =(0 m.t.yod) =(0 s.t.yod))
                    rep
                  =>  .(rep ['.' (y-co s.t.yod)])
                  =>  .(rep ['.' (y-co m.t.yod)])
                  ['.' '.' (y-co h.t.yod)]
                ==
            =>  .(rep ['.' (a-co d.t.yod)])
            =>  .(rep ['.' (a-co m.yod)])
            =>  .(rep ?:(a.yod rep ['-' rep]))
            ['~' (a-co y.yod)]
          ::
              $r
            =+  yug=(yell q.p.lot)
            =>  ^+(. .(rep ?~(f.yug rep ['.' (s-co f.yug)])))
            :-  '~'
            ?:  &(=(0 d.yug) =(0 m.yug) =(0 h.yug) =(0 s.yug))
              ['s' '0' rep]
            =>  ^+(. ?:(=(0 s.yug) . .(rep ['.' 's' (a-co s.yug)])))
            =>  ^+(. ?:(=(0 m.yug) . .(rep ['.' 'm' (a-co m.yug)])))
            =>  ^+(. ?:(=(0 h.yug) . .(rep ['.' 'h' (a-co h.yug)])))
            =>  ^+(. ?:(=(0 d.yug) . .(rep ['.' 'd' (a-co d.yug)])))
            +.rep
          ==
        ::
            $f
          ?:  =(& q.p.lot)
            ['.' 'y' rep]
          ?:(=(| q.p.lot) ['.' 'n' rep] (z-co q.p.lot))
        ::
            $n   ['~' rep]
            $i
          ?+  hay  (z-co q.p.lot)
            $f  ((ro-co [3 10 4] |=(a/@ ~(d ne a))) q.p.lot)
            $s  ((ro-co [4 16 8] |=(a/@ ~(x ne a))) q.p.lot)
          ==
        ::
            $p
          =+  dyx=(met 3 q.p.lot)
          :-  '~'
          ?:  (lte dyx 1)
            (weld (trip (tod:po q.p.lot)) rep)
          ?:  =(2 dyx)
            ;:  weld
              (trip (tos:po (end 3 1 q.p.lot)))
              (trip (tod:po (rsh 3 1 q.p.lot)))
              rep
            ==
          =+  [dyz=(met 5 q.p.lot) fin=| dub=&]
          |-  ^-  tape
          ?:  =(0 dyz)
            rep
          %=    $
              fin      &
              dub      !dub
              dyz      (dec dyz)
              q.p.lot  (rsh 5 1 q.p.lot)
              rep
            =+  syb=(wren:un (end 5 1 q.p.lot))
            =+  cog=~(zig mu [(rsh 4 1 syb) (end 4 1 syb)])
            ;:  weld
              (trip (tos:po (end 3 1 p.cog)))
              (trip (tod:po (rsh 3 1 p.cog)))
              `tape`['-' ~]
              (trip (tos:po (end 3 1 q.cog)))
              (trip (tod:po (rsh 3 1 q.cog)))
              `tape`?.(fin ~ ['-' ?.(dub ~ ['-' ~])])
              rep
            ==
          ==
        ::
            $r
          ?+  hay  (z-co q.p.lot)
            $d  ['.' '~' (r-co (rlyd q.p.lot))]
            $h  ['.' '~' '~' (r-co (rlyh q.p.lot))]
            $q  ['.' '~' '~' '~' (r-co (rlyq q.p.lot))]
            $s  ['.' (r-co (rlys q.p.lot))]
          ==
        ::
            $u
          ?:  ?=($c hay)
            %+  welp  ['0' 'c' (reap (pad:fa q.p.lot) '1')]
            (c-co (enc:fa q.p.lot))
          =-  (weld p.gam ?:(=(0 q.p.lot) `tape`['0' ~] q.gam))
          ^=  gam  ^-  {p/tape q/tape}
          ?+  hay  [~ ((ox-co [10 3] |=(a/@ ~(d ne a))) q.p.lot)]
            $b  [['0' 'b' ~] ((ox-co [2 4] |=(a/@ ~(d ne a))) q.p.lot)]
            $i  [['0' 'i' ~] ((d-co 1) q.p.lot)]
            $x  [['0' 'x' ~] ((ox-co [16 4] |=(a/@ ~(x ne a))) q.p.lot)]
            $v  [['0' 'v' ~] ((ox-co [32 5] |=(a/@ ~(x ne a))) q.p.lot)]
            $w  [['0' 'w' ~] ((ox-co [64 5] |=(a/@ ~(w ne a))) q.p.lot)]
          ==
        ::
            $s
          %+  weld
            ?:((syn:si q.p.lot) "--" "-")
          $(yed 'u', q.p.lot (abs:si q.p.lot))
        ::
            $t
          ?:  =('a' hay)
            ?:  =('s' (cut 3 [2 1] p.p.lot))
              (weld (rip 3 q.p.lot) rep)
            ['~' '.' (weld (rip 3 q.p.lot) rep)]
          ['~' '~' (weld (rip 3 (wood q.p.lot)) rep)]
        ==
      --

Examples

    > ~(rend co ~ %ux 200)
    "0xc8"

    > ~(rend co %many ~[[%$ ux+200] [%$ p+40]])
    "._0xc8_~~tem__"

    > ~(rend co ~ %p 32.819)
    "~pillyt"

    > ~(rend co ~ %ux 18)
    "0x12"

    > ~(rend co [~ p=[p=%if q=0x7f00.0001]])
    ".127.0.0.1"

    > `@ux`.127.0.0.1
    2.130.706.433

    > ~(rend co %many ~[[~ %ud 20] [~ %uw 133] [~ %tas 'sam']])
    "._20_0w25_sam__"

    > ~(rend co %blob [1 1])
    "~0ph"

    > ~0ph
    [1 1]

    > `@uv`(jam [1 1])
    0vph