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