xref: /freebsd/contrib/libxo/README.md (revision b00ab754)
1libxo
2=====
3
4libxo - A Library for Generating Text, XML, JSON, and HTML Output
5
6The libxo library allows an application to generate text, XML, JSON,
7and HTML output using a common set of function calls.  The application
8decides at run time which output style should be produced.  The
9application calls a function "xo_emit" to product output that is
10described in a format string.  A "field descriptor" tells libxo what
11the field is and what it means.
12
13```
14    xo_emit(" {:lines/%7ju/%ju} {:words/%7ju/%ju} "
15            "{:characters/%7ju/%ju}{d:filename/%s}\n",
16            linect, wordct, charct, file);
17```
18
19Output can then be generated in various style, using the "--libxo"
20option:
21
22```
23    % wc /etc/motd
24          25     165    1140 /etc/motd
25    % wc --libxo xml,pretty,warn /etc/motd
26    <wc>
27      <file>
28        <filename>/etc/motd</filename>
29        <lines>25</lines>
30        <words>165</words>
31        <characters>1140</characters>
32      </file>
33    </wc>
34    % wc --libxo json,pretty,warn /etc/motd
35    {
36      "wc": {
37        "file": [
38          {
39            "filename": "/etc/motd",
40            "lines": 25,
41            "words": 165,
42            "characters": 1140
43          }
44        ]
45      }
46    }
47    % wc --libxo html,pretty,warn /etc/motd
48    <div class="line">
49      <div class="text"> </div>
50      <div class="data" data-tag="lines">     25</div>
51      <div class="text"> </div>
52      <div class="data" data-tag="words">    165</div>
53      <div class="text"> </div>
54      <div class="data" data-tag="characters">   1140</div>
55      <div class="text"> </div>
56      <div class="data" data-tag="filename">/etc/motd</div>
57    </div>
58```
59
60View the beautiful documentation at:
61
62http://juniper.github.io/libxo/libxo-manual.html
63
64[![Analytics](https://ga-beacon.appspot.com/UA-56056421-1/Juniper/libxo/Readme)](https://github.com/Juniper/libxo)
65