Differences From
Artifact [0d2437aadd]:
1 1 -- vim: ft=terra
2 -local pstr = lib.mem.ptr(int8)
2 +local pstr = lib.str.t
3 3 local terra cs(s: rawstring)
4 4 return pstr { ptr = s, ct = lib.str.sz(s) }
5 5 end
6 6
7 7 local terra
8 -render_nym(who: &lib.store.actor, scope: uint64)
9 - var n: lib.str.acc n:init(128)
8 +render_nym(who: &lib.store.actor, scope: uint64, tgt: &lib.str.acc)
9 + var acc: lib.str.acc
10 + var n: &lib.str.acc
11 + if tgt ~= nil then n = tgt else
12 + n = &acc
13 + n:init(128)
14 + end
10 15 var xidsan = lib.html.sanitize(cs(who.xid),false)
11 16 if who.nym ~= nil and who.nym[0] ~= 0 then
12 17 var nymsan = lib.html.sanitize(cs(who.nym),false)
13 - n:compose('<span class="nym">',nymsan,'</span> [<span class="handle">',
14 - xidsan,'</span>]')
18 + n:lpush('<span class="nym">'):ppush(nymsan)
19 + :lpush('</span> [<span class="handle">'):ppush(xidsan)
20 + :lpush('</span>]')
15 21 nymsan:free()
16 - else n:compose('<span class="handle">',xidsan,'</span>') end
22 + else n:lpush('<span class="handle">'):ppush(xidsan):lpush('</span>') end
17 23 xidsan:free()
18 24
19 25 if who.epithet ~= nil then
20 26 var episan = lib.html.sanitize(cs(who.epithet),false)
21 - n:lpush(' <span class="epithet">'):ppush(episan):lpush('</span>')
27 + n:lpush('<span class="epithet">'):ppush(episan):lpush('</span>')
22 28 episan:free()
23 29 end
24 30
25 31 -- TODO: if scope == chat room then lookup titles in room member db
26 - return n:finalize()
32 + if tgt == nil then
33 + return n:finalize()
34 + else return pstr.null() end
27 35 end
28 36
29 37 return render_nym