on 5e6a67f help sign in
61 lines 1.1 kB history raw
1### `++tuft`
3UTF32 to UTF8 text
5Convert utf32 glyph to
6LSB utf8 `++cord`.
8Accepts
9-------
11`a` is a codepoint (`@c`).
13Produces
14--------
16A `++cord`.
18Source
19------
21 ++ tuft :: utf32 to utf8 text
22 |= a/@c
23 ^- @t
24 %+ rap 3
25 |- ^- (list @)
26 ?: =(`@`0 a)
27 ~
28 =+ b=(end 5 1 a)
29 =+ c=$(a (rsh 5 1 a))
30 ?: (lte b 0x7f)
31 [b c]
32 ?: (lte b 0x7ff)
33 :* (mix 0b1100.0000 (cut 0 [6 5] b))
34 (mix 0b1000.0000 (end 0 6 b))
35 c
36 ==
37 ?: (lte b 0xffff)
38 :* (mix 0b1110.0000 (cut 0 [12 4] b))
39 (mix 0b1000.0000 (cut 0 [6 6] b))
40 (mix 0b1000.0000 (end 0 6 b))
41 c
42 ==
43 :* (mix 0b1111.0000 (cut 0 [18 3] b))
44 (mix 0b1000.0000 (cut 0 [12 6] b))
45 (mix 0b1000.0000 (cut 0 [6 6] b))
46 (mix 0b1000.0000 (end 0 6 b))
47 c
48 ==
49 ::
51Examples
52--------
54 /~zod/try=> (tuft `@c`%a)
55 'a'
56 /~zod/try=> (tuft `@c`0xb6)
57 '¶'
61***