Date: Sun, 3 Aug 2025 13:28:06 -0400 From: Phil Shafer <phil@juniper.net> To: Damin Rido <daminrido139@gmail.com> Cc: Alan Somers <asomers@freebsd.org>, <src-committers@freebsd.org>, <dev-commits-src-all@freebsd.org>, <dev-commits-src-main@freebsd.org>, "Damin Rido" <rido@freebsd.org> Subject: Re: git: 7b35b4d19630 - main - sockstat: add libxo support Message-ID: <B1E6CF20-5471-451F-83BC-E590DDC9D09C@juniper.net> In-Reply-To: <CAODom%2BaViZ3L4ES05NUeFaXwns3=-gfy6GZB-dtGgPuVC1K2sQ@mail.gmail.com> References: <202507302027.56UKRhb5011315@gitrepo.freebsd.org> <8F928557-328D-46E9-BB53-BDE216693BFC@juniper.net> <CAOtMX2jZYtY-X8Xs1aT_R2SrkR3QZXCSCUO-y_JWhKS_-j0kcQ@mail.gmail.com> <CAODom%2BaViZ3L4ES05NUeFaXwns3=-gfy6GZB-dtGgPuVC1K2sQ@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 2 Aug 2025, at 1:59, Damin Rido wrote: > I deliberately omitted field names in some xo_emit calls when the outpu= t style was XO_STYLE_TEXT, since I assumed field names wouldn't matter fo= r human-readable formats. I also couldn=E2=80=99t trigger any warnings wi= th --libxo:W. However, to stay consistent with xolint expectations and en= sure correctness across all styles, I=E2=80=99ll add proper field names i= n my next commit. Even with text, this is an error, since the library can't know you've mad= e this test, and it doesn't work with HTML. You should use a name consis= tent with other places the field is emitted. > I initially assumed that only TEXT is intended for human-readable outpu= t, and that XML, JSON, and HTML are all machine-readable formats. That=E2= =80=99s why I treated TEXT separately in my formatting logic. Also, I use= space-padding specifically for XO_STYLE_TEXT to produce a neat, structur= ed, table-like output, which I assumed wouldn=E2=80=99t be necessary for = HTML or other formats. Could you please clarify why HTML should be handle= d similarly to TEXT in this case? Using HTML means you get text output, but it is "wrapped" in HTML tags th= at express the purpose (and more) of the fields, allowing CSS to render d= ata in browsers that's consistent with TTY output, but HTML-friendly (e.g= =2E hover, sort, etc). Take a look at xohtml(1) for an example/demonstra= tion. The underlaying HTML looks like: % df --libxo:H / <div class=3D"line"><div class=3D"title">Filesystem </div><div cla= ss=3D"text"> </div><div class=3D"title"> 1K-blocks</div><div class=3D"tex= t"> </div><div class=3D"title"> Used</div><div class=3D"text"> </div><d= iv class=3D"title"> Avail</div><div class=3D"text"> </div><div class=3D= "title">Capacity</div><div class=3D"text"> </div><div class=3D"title">Mo= unted on</div></div><div class=3D"line"><div class=3D"data" data-tag=3D"n= ame">zroot/ROOT/default</div><div class=3D"text"> </div><div class=3D"dat= a" data-tag=3D"total-blocks">1581781064</div><div class=3D"text"> </div><= div class=3D"data" data-tag=3D"used-blocks">7599348</div><div class=3D"te= xt"> </div><div class=3D"data" data-tag=3D"available-blocks">1574181716</= div><div class=3D"text"> </div><div class=3D"data" data-tag=3D"used-perce= nt"> 0</div><div class=3D"units">%</div><div class=3D"text"> </div><d= iv class=3D"text"> </div><div class=3D"data" data-tag=3D"mounted-on">/</= div></div> Or (pretty-fied); % df --libxo:HP / <div class=3D"line"> <div class=3D"title">Filesystem </div> <div class=3D"text"> </div> <div class=3D"title"> 1K-blocks</div> <div class=3D"text"> </div> <div class=3D"title"> Used</div> <div class=3D"text"> </div> <div class=3D"title"> Avail</div> <div class=3D"text"> </div> <div class=3D"title">Capacity</div> <div class=3D"text"> </div> <div class=3D"title">Mounted on</div> </div> <div class=3D"line"> <div class=3D"data" data-tag=3D"name">zroot/ROOT/default</div> <div class=3D"text"> </div> <div class=3D"data" data-tag=3D"total-blocks">1581781064</div> <div class=3D"text"> </div> <div class=3D"data" data-tag=3D"used-blocks">7599348</div> <div class=3D"text"> </div> <div class=3D"data" data-tag=3D"available-blocks">1574181716</div> <div class=3D"text"> </div> <div class=3D"data" data-tag=3D"used-percent"> 0</div> <div class=3D"units">%</div> <div class=3D"text"> </div> <div class=3D"text"> </div> <div class=3D"data" data-tag=3D"mounted-on">/</div> </div> Adding "data" and "path" data-* attributes to the HTML suitable for hover= and link creation: <div class=3D"line"> <div class=3D"data" data-tag=3D"name" data-xpath=3D"/storage-system-inf= ormation/filesystem/name">zroot/ROOT/default</div> <div class=3D"text"> </div> <div class=3D"data" data-tag=3D"total-blocks" data-xpath=3D"/storage-sy= stem-information/filesystem[name =3D 'zroot/ROOT/default']/total-blocks">= 1581780992</div> <div class=3D"text"> </div> <div class=3D"data" data-tag=3D"used-blocks" data-xpath=3D"/storage-sys= tem-information/filesystem[name =3D 'zroot/ROOT/default']/used-blocks">75= 99348</div> <div class=3D"text"> </div> <div class=3D"data" data-tag=3D"available-blocks" data-xpath=3D"/storag= e-system-information/filesystem[name =3D 'zroot/ROOT/default']/available-= blocks">1574181644</div> <div class=3D"text"> </div> <div class=3D"data" data-tag=3D"used-percent" data-xpath=3D"/storage-sy= stem-information/filesystem[name =3D 'zroot/ROOT/default']/used-percent">= 0</div> <div class=3D"units">%</div> <div class=3D"text"> </div> <div class=3D"text"> </div> <div class=3D"data" data-tag=3D"mounted-on" data-xpath=3D"/storage-syst= em-information/filesystem[name =3D 'zroot/ROOT/default']/mounted-on">/</d= iv> </div> So, yes, please handle HTML while you're doing this work. It will maximi= ze the utility of your xo changes. Thanks, Phil
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?B1E6CF20-5471-451F-83BC-E590DDC9D09C>