On 2 Aug 2025, at 1:59, Damin Rido wrote: > I deliberately omitted field names in some xo_emit calls when the output > style was XO_STYLE_TEXT, since I assumed field names wouldn't matter for > human-readable formats. I also couldn’t trigger any warnings with --libxo:W. > However, to stay consistent with xolint expectations and ensure correctness > across all styles, I’ll add proper field names in my next commit.
Even with text, this is an error, since the library can't know you've made this test, and it doesn't work with HTML. You should use a name consistent with other places the field is emitted. > I initially assumed that only TEXT is intended for human-readable output, and > that XML, JSON, and HTML are all machine-readable formats. That’s why I > treated TEXT separately in my formatting logic. Also, I use space-padding > specifically for XO_STYLE_TEXT to produce a neat, structured, table-like > output, which I assumed wouldn’t be necessary for HTML or other formats. > Could you please clarify why HTML should be handled similarly to TEXT in this > case? Using HTML means you get text output, but it is "wrapped" in HTML tags that express the purpose (and more) of the fields, allowing CSS to render data in browsers that's consistent with TTY output, but HTML-friendly (e.g. hover, sort, etc). Take a look at xohtml(1) for an example/demonstration. The underlaying HTML looks like: % df --libxo:H / <div class="line"><div class="title">Filesystem </div><div class="text"> </div><div class="title"> 1K-blocks</div><div class="text"> </div><div class="title"> Used</div><div class="text"> </div><div class="title"> Avail</div><div class="text"> </div><div class="title">Capacity</div><div class="text"> </div><div class="title">Mounted on</div></div><div class="line"><div class="data" data-tag="name">zroot/ROOT/default</div><div class="text"> </div><div class="data" data-tag="total-blocks">1581781064</div><div class="text"> </div><div class="data" data-tag="used-blocks">7599348</div><div class="text"> </div><div class="data" data-tag="available-blocks">1574181716</div><div class="text"> </div><div class="data" data-tag="used-percent"> 0</div><div class="units">%</div><div class="text"> </div><div class="text"> </div><div class="data" data-tag="mounted-on">/</div></div> Or (pretty-fied); % df --libxo:HP / <div class="line"> <div class="title">Filesystem </div> <div class="text"> </div> <div class="title"> 1K-blocks</div> <div class="text"> </div> <div class="title"> Used</div> <div class="text"> </div> <div class="title"> Avail</div> <div class="text"> </div> <div class="title">Capacity</div> <div class="text"> </div> <div class="title">Mounted on</div> </div> <div class="line"> <div class="data" data-tag="name">zroot/ROOT/default</div> <div class="text"> </div> <div class="data" data-tag="total-blocks">1581781064</div> <div class="text"> </div> <div class="data" data-tag="used-blocks">7599348</div> <div class="text"> </div> <div class="data" data-tag="available-blocks">1574181716</div> <div class="text"> </div> <div class="data" data-tag="used-percent"> 0</div> <div class="units">%</div> <div class="text"> </div> <div class="text"> </div> <div class="data" data-tag="mounted-on">/</div> </div> Adding "data" and "path" data-* attributes to the HTML suitable for hover and link creation: <div class="line"> <div class="data" data-tag="name" data-xpath="/storage-system-information/filesystem/name">zroot/ROOT/default</div> <div class="text"> </div> <div class="data" data-tag="total-blocks" data-xpath="/storage-system-information/filesystem[name = 'zroot/ROOT/default']/total-blocks">1581780992</div> <div class="text"> </div> <div class="data" data-tag="used-blocks" data-xpath="/storage-system-information/filesystem[name = 'zroot/ROOT/default']/used-blocks">7599348</div> <div class="text"> </div> <div class="data" data-tag="available-blocks" data-xpath="/storage-system-information/filesystem[name = 'zroot/ROOT/default']/available-blocks">1574181644</div> <div class="text"> </div> <div class="data" data-tag="used-percent" data-xpath="/storage-system-information/filesystem[name = 'zroot/ROOT/default']/used-percent"> 0</div> <div class="units">%</div> <div class="text"> </div> <div class="text"> </div> <div class="data" data-tag="mounted-on" data-xpath="/storage-system-information/filesystem[name = 'zroot/ROOT/default']/mounted-on">/</div> </div> So, yes, please handle HTML while you're doing this work. It will maximize the utility of your xo changes. Thanks, Phil