Import libxo 0.8.4

This commit is contained in:
Phil Shafer 2017-08-03 15:43:14 +00:00
parent f652982ac4
commit 76c53ac649
60 changed files with 557 additions and 30 deletions

View File

@ -38,7 +38,14 @@ GH_PAGES_DIR = gh-pages/
GH_PAGES_DIR_VER = gh-pages/${PACKAGE_VERSION} GH_PAGES_DIR_VER = gh-pages/${PACKAGE_VERSION}
PACKAGE_FILE = ${PACKAGE_TARNAME}-${PACKAGE_VERSION}.tar.gz PACKAGE_FILE = ${PACKAGE_TARNAME}-${PACKAGE_VERSION}.tar.gz
upload: dist upload-docs XOHTML_FILES = \
${top_srcdir}/xohtml/xohtml.css \
${top_srcdir}/xohtml/xohtml.js \
${top_srcdir}/xohtml/external/jquery.js \
${top_srcdir}/xohtml/external/jquery.qtip.css \
${top_srcdir}/xohtml/external/jquery.qtip.js
upload: dist upload-docs upload-xohtml-files
@echo "Remember to run:" @echo "Remember to run:"
@echo " gt tag ${PACKAGE_VERSION}" @echo " gt tag ${PACKAGE_VERSION}"
@ -56,6 +63,18 @@ upload-docs: docs
libxo-manual.html ${PACKAGE_VERSION} \ libxo-manual.html ${PACKAGE_VERSION} \
&& git push origin gh-pages ) ; true && git push origin gh-pages ) ; true
upload-xohtml-files:
@echo "Uploading xohtml files ... "
@-[ -d ${GH_PAGES_DIR} ] \
&& echo "Updating xohtml files on gh-pages ..." \
&& mkdir -p ${GH_PAGES_DIR_VER}/xohtml \
&& cp ${XOHTML_FILES} ${GH_PAGES_DIR_VER}/xohtml \
&& (cd ${GH_PAGES_DIR} \
&& git add ${PACKAGE_VERSION}/xohtml \
&& git commit -m 'new xohtml files' \
${PACKAGE_VERSION}/xohtml \
&& git push origin gh-pages ) ; true
pkgconfigdir=$(libdir)/pkgconfig pkgconfigdir=$(libdir)/pkgconfig
pkgconfig_DATA = packaging/${PACKAGE_NAME}.pc pkgconfig_DATA = packaging/${PACKAGE_NAME}.pc

View File

@ -12,7 +12,7 @@
# #
AC_PREREQ(2.2) AC_PREREQ(2.2)
AC_INIT([libxo], [0.8.1], [phil@juniper.net]) AC_INIT([libxo], [0.8.4], [phil@juniper.net])
AM_INIT_AUTOMAKE([-Wall -Werror foreign -Wno-portability]) AM_INIT_AUTOMAKE([-Wall -Werror foreign -Wno-portability])
# Support silent build rules. Requires at least automake-1.11. # Support silent build rules. Requires at least automake-1.11.

View File

@ -515,7 +515,7 @@ li.indline1 {
} }
@top-right { @top-right {
content: "June 2017"; content: "August 2017";
} }
@top-center { @top-center {
@ -22011,7 +22011,7 @@ jQuery(function ($) {
</tr> </tr>
<tr> <tr>
<td class="header left"></td> <td class="header left"></td>
<td class="header right">June 14, 2017</td> <td class="header right">August 3, 2017</td>
</tr> </tr>
</table></div> </table></div>
<p id="title" class="title">libxo: The Easy Way to Generate text, XML, JSON, and HTML output<br><span class="filename">libxo-manual</span></p> <p id="title" class="title">libxo: The Easy Way to Generate text, XML, JSON, and HTML output<br><span class="filename">libxo-manual</span></p>

View File

@ -311,3 +311,13 @@ to use an alternative set of low-level output functions.
.Xr xo_set_style 3 , .Xr xo_set_style 3 ,
.Xr xo_set_writer 3 , .Xr xo_set_writer 3 ,
.Xr xo_format 5 .Xr xo_format 5
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -137,7 +137,7 @@ static const char xo_default_format[] = "%s";
#define XO_INDENT_BY 2 /* Amount to indent when pretty printing */ #define XO_INDENT_BY 2 /* Amount to indent when pretty printing */
#define XO_DEPTH 128 /* Default stack depth */ #define XO_DEPTH 128 /* Default stack depth */
#define XO_MAX_ANCHOR_WIDTH (8*1024) /* Anything wider is just sillyb */ #define XO_MAX_ANCHOR_WIDTH (8*1024) /* Anything wider is just silly */
#define XO_FAILURE_NAME "failure" #define XO_FAILURE_NAME "failure"
@ -5071,16 +5071,60 @@ xo_find_width (xo_handle_t *xop, xo_field_info_t *xfip,
bp[vlen] = '\0'; bp[vlen] = '\0';
width = strtol(bp, &cp, 0); width = strtol(bp, &cp, 0);
if (width == LONG_MIN || width == LONG_MAX if (width == LONG_MIN || width == LONG_MAX || bp == cp || *cp != '\0') {
|| bp == cp || *cp != '\0' ) {
width = 0; width = 0;
xo_failure(xop, "invalid width for anchor: '%s'", bp); xo_failure(xop, "invalid width for anchor: '%s'", bp);
} }
} else if (flen) { } else if (flen) {
if (flen != 2 || strncmp("%d", fmt, flen) != 0) /*
xo_failure(xop, "invalid width format: '%*.*s'", flen, flen, fmt); * We really expect the format for width to be "{:/%d}" or
if (!XOF_ISSET(xop, XOF_NO_VA_ARG)) * "{:/%u}", so if that's the case, we just grab our width off
width = va_arg(xop->xo_vap, int); * the argument list. But we need to avoid optimized logic if
* there's a custom formatter.
*/
if (xop->xo_formatter == NULL && flen == 2
&& strncmp("%d", fmt, flen) == 0) {
if (!XOF_ISSET(xop, XOF_NO_VA_ARG))
width = va_arg(xop->xo_vap, int);
} else if (xop->xo_formatter == NULL && flen == 2
&& strncmp("%u", fmt, flen) == 0) {
if (!XOF_ISSET(xop, XOF_NO_VA_ARG))
width = va_arg(xop->xo_vap, unsigned);
} else {
/*
* So we have a format and it's not a simple one like
* "{:/%d}". That means we need to format the field,
* extract the value from the formatted output, and then
* discard that output.
*/
int anchor_was_set = FALSE;
xo_buffer_t *xbp = &xop->xo_data;
ssize_t start_offset = xo_buf_offset(xbp);
bp = xo_buf_cur(xbp); /* Save start of the string */
cp = NULL;
if (XOIF_ISSET(xop, XOIF_ANCHOR)) {
XOIF_CLEAR(xop, XOIF_ANCHOR);
anchor_was_set = TRUE;
}
ssize_t rc = xo_do_format_field(xop, xbp, fmt, flen, 0);
if (rc >= 0) {
xo_buf_append(xbp, "", 1); /* Append a NUL */
width = strtol(bp, &cp, 0);
if (width == LONG_MIN || width == LONG_MAX
|| bp == cp || *cp != '\0') {
width = 0;
xo_failure(xop, "invalid width for anchor: '%s'", bp);
}
}
/* Reset the cur pointer to where we found it */
xbp->xb_curp = xbp->xb_bufp + start_offset;
if (anchor_was_set)
XOIF_SET(xop, XOIF_ANCHOR);
}
} }
return width; return width;
@ -5107,9 +5151,6 @@ static void
xo_anchor_start (xo_handle_t *xop, xo_field_info_t *xfip, xo_anchor_start (xo_handle_t *xop, xo_field_info_t *xfip,
const char *value, ssize_t vlen) const char *value, ssize_t vlen)
{ {
if (xo_style(xop) != XO_STYLE_TEXT && xo_style(xop) != XO_STYLE_HTML)
return;
if (XOIF_ISSET(xop, XOIF_ANCHOR)) if (XOIF_ISSET(xop, XOIF_ANCHOR))
xo_failure(xop, "the anchor already recording is discarded"); xo_failure(xop, "the anchor already recording is discarded");
@ -5129,9 +5170,6 @@ static void
xo_anchor_stop (xo_handle_t *xop, xo_field_info_t *xfip, xo_anchor_stop (xo_handle_t *xop, xo_field_info_t *xfip,
const char *value, ssize_t vlen) const char *value, ssize_t vlen)
{ {
if (xo_style(xop) != XO_STYLE_TEXT && xo_style(xop) != XO_STYLE_HTML)
return;
if (!XOIF_ISSET(xop, XOIF_ANCHOR)) { if (!XOIF_ISSET(xop, XOIF_ANCHOR)) {
xo_failure(xop, "no start anchor"); xo_failure(xop, "no start anchor");
return; return;

View File

@ -58,3 +58,13 @@ already emitted in other form.
.Sh SEE ALSO .Sh SEE ALSO
.Xr xo_emit 3 , .Xr xo_emit 3 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -65,3 +65,13 @@ resources associated with the default handle.
.Xr xo_emit 3 , .Xr xo_emit 3 ,
.Xr xo_set_options 3 , .Xr xo_set_options 3 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -102,3 +102,13 @@ then the number of display columns consumed by the output will be returned.
.Xr xo_open_list 3 , .Xr xo_open_list 3 ,
.Xr xo_format 5 , .Xr xo_format 5 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -70,3 +70,13 @@ parameter.
.Xr xo_format 5 , .Xr xo_format 5 ,
.Xr xo_err 3 , .Xr xo_err 3 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -109,3 +109,13 @@ for details.
.Xr xo_open_list 3 , .Xr xo_open_list 3 ,
.Xr xo_format 5 , .Xr xo_format 5 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -72,3 +72,13 @@ parameter.
.Xr xo_emit 3 , .Xr xo_emit 3 ,
.Xr xo_emit_err 3 , .Xr xo_emit_err 3 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -39,3 +39,13 @@ calls.
.Xr printf 3 , .Xr printf 3 ,
.Xr xo_emit 3 , .Xr xo_emit 3 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -37,3 +37,13 @@ especially for the non-TEXT output styles.
.Sh SEE ALSO .Sh SEE ALSO
.Xr xo_emit 3 , .Xr xo_emit 3 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -33,3 +33,13 @@ function is used for this.
.Sh SEE ALSO .Sh SEE ALSO
.Xr xo_emit 3 , .Xr xo_emit 3 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -965,3 +965,13 @@ names to make that difference more obvious.
.Xr libxo 3 , .Xr libxo 3 ,
.Xr xolint 1 , .Xr xolint 1 ,
.Xr xo_emit 3 .Xr xo_emit 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -66,3 +66,13 @@ and
.Sh SEE ALSO .Sh SEE ALSO
.Xr xo_emit 3 , .Xr xo_emit 3 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -41,3 +41,13 @@ function.
.Xr xo_open_list 3 , .Xr xo_open_list 3 ,
.Xr xo_format 5 , .Xr xo_format 5 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -186,3 +186,13 @@ and the name recorded do not match.
.Sh SEE ALSO .Sh SEE ALSO
.Xr xo_emit 3 , .Xr xo_emit 3 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -156,3 +156,13 @@ are rendered as multiple leaf elements.
.Sh SEE ALSO .Sh SEE ALSO
.Xr xo_emit 3 , .Xr xo_emit 3 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -103,3 +103,13 @@ properly.
.Sh SEE ALSO .Sh SEE ALSO
.Xr xo_emit 3 , .Xr xo_emit 3 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -145,3 +145,12 @@ The following are three example invocations of
.Sh SEE ALSO .Sh SEE ALSO
.Xr libxo 3 , .Xr libxo 3 ,
.Xr xo_format 5 .Xr xo_format 5
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -150,3 +150,13 @@ must be maintained by the caller.
.Sh SEE ALSO .Sh SEE ALSO
.Xr xo_emit 3 , .Xr xo_emit 3 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -52,3 +52,13 @@ functions are used.
.Sh SEE ALSO .Sh SEE ALSO
.Xr xo_emit 3 , .Xr xo_emit 3 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -137,3 +137,13 @@ handle.
.Sh SEE ALSO .Sh SEE ALSO
.Xr xo_emit 3 , .Xr xo_emit 3 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -100,3 +100,13 @@ and "data-help" attributes:
.Sh SEE ALSO .Sh SEE ALSO
.Xr xo_emit 3 , .Xr xo_emit 3 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -29,3 +29,13 @@ The options are identical to those listed in
.Sh SEE ALSO .Sh SEE ALSO
.Xr xo_emit 3 , .Xr xo_emit 3 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -51,3 +51,13 @@ The name can be any of the styles: "text", "xml", "json", or "html".
.Sh SEE ALSO .Sh SEE ALSO
.Xr xo_emit 3 , .Xr xo_emit 3 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -34,3 +34,13 @@ https://www.iana.org/assignments/enterprise-numbers/enterprise-numbers
.Sh SEE ALSO .Sh SEE ALSO
.Xr xo_syslog 3 , .Xr xo_syslog 3 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -32,3 +32,13 @@ is in use.
.Sh SEE ALSO .Sh SEE ALSO
.Xr xo_emit 3 , .Xr xo_emit 3 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -54,3 +54,13 @@ flush any pending data associated with the opaque pointer.
.Sh SEE ALSO .Sh SEE ALSO
.Xr xo_emit 3 , .Xr xo_emit 3 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -77,3 +77,13 @@ function names.
.Xr xo_set_syslog_enterprise_id 3 , .Xr xo_set_syslog_enterprise_id 3 ,
.Xr xo_format 5 , .Xr xo_format 5 ,
.Xr libxo 3 .Xr libxo 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -1,5 +1,11 @@
op create: [] [] [0] op create: [] [] [0]
op open_container: [top] [] [0x810] op open_container: [top] [] [0x810]
op content: [address] [0x0] [0]
op content: [port] [1] [0]
op content: [address] [0x0] [0]
op content: [port] [1] [0]
op content: [address] [0x0] [0]
op content: [port] [1] [0]
op content: [used-percent] [12] [0] op content: [used-percent] [12] [0]
op content: [kve_start] [0xdeadbeef] [0x8] op content: [kve_start] [0xdeadbeef] [0x8]
op content: [kve_end] [0xcabb1e] [0x8] op content: [kve_end] [0xcabb1e] [0x8]

File diff suppressed because one or more lines are too long

View File

@ -1,3 +1,24 @@
<div class="line">
<div class="text">anchor </div>
<div class="padding"> </div>
<div class="data" data-tag="address" data-xpath="/top/address">0x0</div>
<div class="text">..</div>
<div class="data" data-tag="port" data-xpath="/top/port">1</div>
</div>
<div class="line">
<div class="text">anchor </div>
<div class="padding"> </div>
<div class="data" data-tag="address" data-xpath="/top/address">0x0</div>
<div class="text">..</div>
<div class="data" data-tag="port" data-xpath="/top/port">1</div>
</div>
<div class="line">
<div class="text">anchor </div>
<div class="padding"> </div>
<div class="data" data-tag="address" data-xpath="/top/address">0x0</div>
<div class="text">..</div>
<div class="data" data-tag="port" data-xpath="/top/port">1</div>
</div>
<div class="line"> <div class="line">
<div class="text">df </div> <div class="text">df </div>
<div class="data" data-tag="used-percent" data-xpath="/top/used-percent"> 12</div> <div class="data" data-tag="used-percent" data-xpath="/top/used-percent"> 12</div>

View File

@ -1,3 +1,24 @@
<div class="line">
<div class="text">anchor </div>
<div class="padding"> </div>
<div class="data" data-tag="address">0x0</div>
<div class="text">..</div>
<div class="data" data-tag="port">1</div>
</div>
<div class="line">
<div class="text">anchor </div>
<div class="padding"> </div>
<div class="data" data-tag="address">0x0</div>
<div class="text">..</div>
<div class="data" data-tag="port">1</div>
</div>
<div class="line">
<div class="text">anchor </div>
<div class="padding"> </div>
<div class="data" data-tag="address">0x0</div>
<div class="text">..</div>
<div class="data" data-tag="port">1</div>
</div>
<div class="line"> <div class="line">
<div class="text">df </div> <div class="text">df </div>
<div class="data" data-tag="used-percent"> 12</div> <div class="data" data-tag="used-percent"> 12</div>

View File

@ -1,2 +1,2 @@
{"top": {"used-percent":12,"kve_start":"0xdeadbeef","kve_end":"0xcabb1e","host":"my-box","domain":"example.com","host":"my-box","domain":"example.com","label":"value","max-chaos":"very","min-chaos":42,"some-chaos":"[42]","host":"my-box","domain":"example.com", "data": {"item": [{"sku":"GRO-000-415","name":"gum","sold":1412,"in-stock":54,"on-order":10}, {"sku":"HRD-000-212","name":"rope","sold":85,"in-stock":4,"on-order":2}, {"sku":"HRD-000-517","name":"ladder","sold":0,"in-stock":2,"on-order":1}, {"sku":"HRD-000-632","name":"bolt","sold":4123,"in-stock":144,"on-order":42}, {"sku":"GRO-000-2331","name":"water","sold":17,"in-stock":14,"on-order":2}]}, "data2": {"item": [{"sku":"GRO-000-415","name":"gum","sold":1412.0,"in-stock":54,"on-order":10}, {"sku":"HRD-000-212","name":"rope","sold":85.0,"in-stock":4,"on-order":2}, {"sku":"HRD-000-517","name":"ladder","sold":0,"in-stock":2,"on-order":1}, {"sku":"HRD-000-632","name":"bolt","sold":4123.0,"in-stock":144,"on-order":42}, {"sku":"GRO-000-2331","name":"water","sold":17.0,"in-stock":14,"on-order":2}]}, "data3": {"item": [{"sku":"GRO-000-533","name":"fish","sold":1321.0,"in-stock":45,"on-order":1}]}, "data4": {"item": ["gum","rope","ladder","bolt","water"]},"cost":425,"cost":455,"mode":"mode","mode_octal":"octal","links":"links","user":"user","group":"group","pre":"that","links":3,"post":"this","mode":"/some/file","mode_octal":640,"links":1,"user":"user","group":"group"} {"top": {"address":"0x0","port":1,"address":"0x0","port":1,"address":"0x0","port":1,"used-percent":12,"kve_start":"0xdeadbeef","kve_end":"0xcabb1e","host":"my-box","domain":"example.com","host":"my-box","domain":"example.com","label":"value","max-chaos":"very","min-chaos":42,"some-chaos":"[42]","host":"my-box","domain":"example.com", "data": {"item": [{"sku":"GRO-000-415","name":"gum","sold":1412,"in-stock":54,"on-order":10}, {"sku":"HRD-000-212","name":"rope","sold":85,"in-stock":4,"on-order":2}, {"sku":"HRD-000-517","name":"ladder","sold":0,"in-stock":2,"on-order":1}, {"sku":"HRD-000-632","name":"bolt","sold":4123,"in-stock":144,"on-order":42}, {"sku":"GRO-000-2331","name":"water","sold":17,"in-stock":14,"on-order":2}]}, "data2": {"item": [{"sku":"GRO-000-415","name":"gum","sold":1412.0,"in-stock":54,"on-order":10}, {"sku":"HRD-000-212","name":"rope","sold":85.0,"in-stock":4,"on-order":2}, {"sku":"HRD-000-517","name":"ladder","sold":0,"in-stock":2,"on-order":1}, {"sku":"HRD-000-632","name":"bolt","sold":4123.0,"in-stock":144,"on-order":42}, {"sku":"GRO-000-2331","name":"water","sold":17.0,"in-stock":14,"on-order":2}]}, "data3": {"item": [{"sku":"GRO-000-533","name":"fish","sold":1321.0,"in-stock":45,"on-order":1}]}, "data4": {"item": ["gum","rope","ladder","bolt","water"]},"cost":425,"cost":455,"mode":"mode","mode_octal":"octal","links":"links","user":"user","group":"group","pre":"that","links":3,"post":"this","mode":"/some/file","mode_octal":640,"links":1,"user":"user","group":"group"}
} }

View File

@ -1,5 +1,11 @@
{ {
"top": { "top": {
"address": "0x0",
"port": 1,
"address": "0x0",
"port": 1,
"address": "0x0",
"port": 1,
"used-percent": 12, "used-percent": 12,
"kve_start": "0xdeadbeef", "kve_start": "0xdeadbeef",
"kve_end": "0xcabb1e", "kve_end": "0xcabb1e",

View File

@ -1,3 +1,6 @@
anchor 0x0..1
anchor 0x0..1
anchor 0x0..1
df 12% df 12%
testing argument modifier my-box.example.com... testing argument modifier my-box.example.com...
testing argument modifier with encoding to .example.com... testing argument modifier with encoding to .example.com...

View File

@ -1 +1 @@
<top><used-percent>12</used-percent><kve_start>0xdeadbeef</kve_start><kve_end>0xcabb1e</kve_end><host>my-box</host><domain>example.com</domain><host>my-box</host><domain>example.com</domain><label>value</label><max-chaos>very</max-chaos><min-chaos>42</min-chaos><some-chaos>[42]</some-chaos><host>my-box</host><domain>example.com</domain><data test="value"><item test2="value2"><sku test3="value3" key="key">GRO-000-415</sku><name key="key">gum</name><sold>1412</sold><in-stock>54</in-stock><on-order>10</on-order></item><item><sku test3="value3" key="key">HRD-000-212</sku><name key="key">rope</name><sold>85</sold><in-stock>4</in-stock><on-order>2</on-order></item><item><sku test3="value3" key="key">HRD-000-517</sku><name key="key">ladder</name><sold>0</sold><in-stock>2</in-stock><on-order>1</on-order></item><item><sku test3="value3" key="key">HRD-000-632</sku><name key="key">bolt</name><sold>4123</sold><in-stock>144</in-stock><on-order>42</on-order></item><item><sku test3="value3" key="key">GRO-000-2331</sku><name key="key">water</name><sold>17</sold><in-stock>14</in-stock><on-order>2</on-order></item></data><data2><item><sku key="key">GRO-000-415</sku><name key="key">gum</name><sold>1412.0</sold><in-stock>54</in-stock><on-order>10</on-order></item><item><sku key="key">HRD-000-212</sku><name key="key">rope</name><sold>85.0</sold><in-stock>4</in-stock><on-order>2</on-order></item><item><sku key="key">HRD-000-517</sku><name key="key">ladder</name><sold>0</sold><in-stock>2</in-stock><on-order>1</on-order></item><item><sku key="key">HRD-000-632</sku><name key="key">bolt</name><sold>4123.0</sold><in-stock>144</in-stock><on-order>42</on-order></item><item><sku key="key">GRO-000-2331</sku><name key="key">water</name><sold>17.0</sold><in-stock>14</in-stock><on-order>2</on-order></item></data2><data3><item><sku key="key">GRO-000-533</sku><name key="key">fish</name><sold>1321.0</sold><in-stock>45</in-stock><on-order>1</on-order></item></data3><data4><item test4="value4">gum</item><item test4="value4">rope</item><item test4="value4">ladder</item><item test4="value4">bolt</item><item test4="value4">water</item></data4><cost>425</cost><cost>455</cost><mode>mode</mode><mode_octal>octal</mode_octal><links>links</links><user>user</user><group>group</group><pre>that</pre><links>3</links><post>this</post><mode>/some/file</mode><mode_octal>640</mode_octal><links>1</links><user>user</user><group>group</group></top> <top><address>0x0</address><port>1</port><address>0x0</address><port>1</port><address>0x0</address><port>1</port><used-percent>12</used-percent><kve_start>0xdeadbeef</kve_start><kve_end>0xcabb1e</kve_end><host>my-box</host><domain>example.com</domain><host>my-box</host><domain>example.com</domain><label>value</label><max-chaos>very</max-chaos><min-chaos>42</min-chaos><some-chaos>[42]</some-chaos><host>my-box</host><domain>example.com</domain><data test="value"><item test2="value2"><sku test3="value3" key="key">GRO-000-415</sku><name key="key">gum</name><sold>1412</sold><in-stock>54</in-stock><on-order>10</on-order></item><item><sku test3="value3" key="key">HRD-000-212</sku><name key="key">rope</name><sold>85</sold><in-stock>4</in-stock><on-order>2</on-order></item><item><sku test3="value3" key="key">HRD-000-517</sku><name key="key">ladder</name><sold>0</sold><in-stock>2</in-stock><on-order>1</on-order></item><item><sku test3="value3" key="key">HRD-000-632</sku><name key="key">bolt</name><sold>4123</sold><in-stock>144</in-stock><on-order>42</on-order></item><item><sku test3="value3" key="key">GRO-000-2331</sku><name key="key">water</name><sold>17</sold><in-stock>14</in-stock><on-order>2</on-order></item></data><data2><item><sku key="key">GRO-000-415</sku><name key="key">gum</name><sold>1412.0</sold><in-stock>54</in-stock><on-order>10</on-order></item><item><sku key="key">HRD-000-212</sku><name key="key">rope</name><sold>85.0</sold><in-stock>4</in-stock><on-order>2</on-order></item><item><sku key="key">HRD-000-517</sku><name key="key">ladder</name><sold>0</sold><in-stock>2</in-stock><on-order>1</on-order></item><item><sku key="key">HRD-000-632</sku><name key="key">bolt</name><sold>4123.0</sold><in-stock>144</in-stock><on-order>42</on-order></item><item><sku key="key">GRO-000-2331</sku><name key="key">water</name><sold>17.0</sold><in-stock>14</in-stock><on-order>2</on-order></item></data2><data3><item><sku key="key">GRO-000-533</sku><name key="key">fish</name><sold>1321.0</sold><in-stock>45</in-stock><on-order>1</on-order></item></data3><data4><item test4="value4">gum</item><item test4="value4">rope</item><item test4="value4">ladder</item><item test4="value4">bolt</item><item test4="value4">water</item></data4><cost>425</cost><cost>455</cost><mode>mode</mode><mode_octal>octal</mode_octal><links>links</links><user>user</user><group>group</group><pre>that</pre><links>3</links><post>this</post><mode>/some/file</mode><mode_octal>640</mode_octal><links>1</links><user>user</user><group>group</group></top>

View File

@ -1,4 +1,10 @@
<top> <top>
<address>0x0</address>
<port>1</port>
<address>0x0</address>
<port>1</port>
<address>0x0</address>
<port>1</port>
<used-percent>12</used-percent> <used-percent>12</used-percent>
<kve_start>0xdeadbeef</kve_start> <kve_start>0xdeadbeef</kve_start>
<kve_end>0xcabb1e</kve_end> <kve_end>0xcabb1e</kve_end>

View File

@ -34,7 +34,7 @@ op content: [unknown] [1010] [0]
op content: [unknown] [1010] [0] op content: [unknown] [1010] [0]
op content: [min] [15] [0x20] op content: [min] [15] [0x20]
op content: [cur] [20] [0x20] op content: [cur] [20] [0x20]
op content: [max] [30] [0] op content: [max] [125] [0]
op content: [min] [15] [0] op content: [min] [15] [0]
op content: [cur] [20] [0] op content: [cur] [20] [0]
op content: [max] [125] [0] op content: [max] [125] [0]

View File

@ -1,2 +1,2 @@
{"top": {"data": {"what":"braces","length":"abcdef","fd":-1,"error":"Bad file descriptor","test":"good","fd":-1,"error":"Bad fi","test":"good","lines":20,"words":30,"characters":40, "bytes": [0,1,2,3,4],"mbuf-current":10,"mbuf-cache":20,"mbuf-total":30,"distance":50,"location":"Boston","memory":64,"total":640,"memory":64,"total":640,"ten":10,"eleven":11,"unknown":1010,"unknown":1010,"min":15,"cur":20,"max":30,"min":15,"cur":20,"max":125,"min":15,"cur":20,"max":125,"min":15,"cur":20,"max":125,"val1":21,"val2":58368,"val3":100663296,"val4":44470272,"val5":1342172800, "flag": ["one","two","three"],"works":null,"empty-tag":true,"t1":"1000","t2":"test5000","t3":"ten-longx","t4":"xtest", "__error": {"message":"this is an error"}, "__error": {"message":"two more errors"}, "__warning": {"message":"this is an warning"}, "__warning": {"message":"two more warnings"},"count":10,"test":4, "error": {"message":"Shut 'er down, Clancey! She's a-pumpin' mud! <>!,\"!<>\n"}}} {"top": {"data": {"what":"braces","length":"abcdef","fd":-1,"error":"Bad file descriptor","test":"good","fd":-1,"error":"Bad fi","test":"good","lines":20,"words":30,"characters":40, "bytes": [0,1,2,3,4],"mbuf-current":10,"mbuf-cache":20,"mbuf-total":30,"distance":50,"location":"Boston","memory":64,"total":640,"memory":64,"total":640,"ten":10,"eleven":11,"unknown":1010,"unknown":1010,"min":15,"cur":20,"max":125,"min":15,"cur":20,"max":125,"min":15,"cur":20,"max":125,"min":15,"cur":20,"max":125,"val1":21,"val2":58368,"val3":100663296,"val4":44470272,"val5":1342172800, "flag": ["one","two","three"],"works":null,"empty-tag":true,"t1":"1000","t2":"test5000","t3":"ten-longx","t4":"xtest", "__error": {"message":"this is an error"}, "__error": {"message":"two more errors"}, "__warning": {"message":"this is an warning"}, "__warning": {"message":"two more warnings"},"count":10,"test":4, "error": {"message":"Shut 'er down, Clancey! She's a-pumpin' mud! <>!,\"!<>\n"}}}
} }

View File

@ -34,7 +34,7 @@
"unknown": 1010, "unknown": 1010,
"min": 15, "min": 15,
"cur": 20, "cur": 20,
"max": 30, "max": 125,
"min": 15, "min": 15,
"cur": 20, "cur": 20,
"max": 125, "max": 125,

View File

@ -2,6 +2,6 @@
</message><message>abcdef: Bad file descriptor </message><message>abcdef: Bad file descriptor
</message><message>improper use of profanity; ten yard penalty; first down </message><message>improper use of profanity; ten yard penalty; first down
</message><length>abcdef</length><fd>-1</fd><error>Bad file descriptor</error><test>good</test><fd>-1</fd><error>Bad fi</error><test>good</test><message>improper use of profanity; ten yard penalty; first down </message><length>abcdef</length><fd>-1</fd><error>Bad file descriptor</error><test>good</test><fd>-1</fd><error>Bad fi</error><test>good</test><message>improper use of profanity; ten yard penalty; first down
</message><lines>20</lines><words>30</words><characters>40</characters><bytes>0</bytes><bytes>1</bytes><bytes>2</bytes><bytes>3</bytes><bytes>4</bytes><mbuf-current>10</mbuf-current><mbuf-cache>20</mbuf-cache><mbuf-total>30</mbuf-total><distance units="miles">50</distance><location>Boston</location><memory units="k">64</memory><total units="kb">640</total><memory units="k">64</memory><total units="kilobytes">640</total><ten>10</ten><eleven>11</eleven><unknown>1010</unknown><unknown>1010</unknown><min>15</min><cur>20</cur><max>30</max><min>15</min><cur>20</cur><max>125</max><min>15</min><cur>20</cur><max>125</max><min>15</min><cur>20</cur><max>125</max><val1>21</val1><val2>58368</val2><val3>100663296</val3><val4>44470272</val4><val5>1342172800</val5><flag>one</flag><flag>two</flag><flag>three</flag><works>null</works><empty-tag></empty-tag><t1>1000</t1><t2>test5000</t2><t3>ten-longx</t3><t4>xtest</t4><__error><message>this is an error</message></__error><__error><message>two more errors</message></__error><__warning><message>this is an warning</message></__warning><__warning><message>two more warnings</message></__warning><count>10</count><test>4</test><message>improper use of profanity; ten yard penalty; first down </message><lines>20</lines><words>30</words><characters>40</characters><bytes>0</bytes><bytes>1</bytes><bytes>2</bytes><bytes>3</bytes><bytes>4</bytes><mbuf-current>10</mbuf-current><mbuf-cache>20</mbuf-cache><mbuf-total>30</mbuf-total><distance units="miles">50</distance><location>Boston</location><memory units="k">64</memory><total units="kb">640</total><memory units="k">64</memory><total units="kilobytes">640</total><ten>10</ten><eleven>11</eleven><unknown>1010</unknown><unknown>1010</unknown><min>15</min><cur>20</cur><max>125</max><min>15</min><cur>20</cur><max>125</max><min>15</min><cur>20</cur><max>125</max><min>15</min><cur>20</cur><max>125</max><val1>21</val1><val2>58368</val2><val3>100663296</val3><val4>44470272</val4><val5>1342172800</val5><flag>one</flag><flag>two</flag><flag>three</flag><works>null</works><empty-tag></empty-tag><t1>1000</t1><t2>test5000</t2><t3>ten-longx</t3><t4>xtest</t4><__error><message>this is an error</message></__error><__error><message>two more errors</message></__error><__warning><message>this is an warning</message></__warning><__warning><message>two more warnings</message></__warning><count>10</count><test>4</test><message>improper use of profanity; ten yard penalty; first down
</message><error><message>Shut 'er down, Clancey! She's a-pumpin' mud! &lt;&gt;!,"!&lt;&gt; </message><error><message>Shut 'er down, Clancey! She's a-pumpin' mud! &lt;&gt;!,"!&lt;&gt;
</message></error></data></top> </message></error></data></top>

View File

@ -39,7 +39,7 @@
<unknown>1010</unknown> <unknown>1010</unknown>
<min>15</min> <min>15</min>
<cur>20</cur> <cur>20</cur>
<max>30</max> <max>125</max>
<min>15</min> <min>15</min>
<cur>20</cur> <cur>20</cur>
<max>125</max> <max>125</max>

View File

@ -80,6 +80,10 @@ main (int argc, char **argv)
xo_open_container_h(NULL, "top"); xo_open_container_h(NULL, "top");
xo_emit("anchor {[:/%d}{:address/%p}..{:port/%u}{]:}\n", 18, NULL, 1);
xo_emit("anchor {[:18}{:address/%p}..{:port/%u}{]:}\n", NULL, 1);
xo_emit("anchor {[:/18}{:address/%p}..{:port/%u}{]:}\n", NULL, 1);
xo_emit("df {:used-percent/%5.0f}{U:%%}\n", (double) 12); xo_emit("df {:used-percent/%5.0f}{U:%%}\n", (double) 12);
xo_emit("{e:kve_start/%#jx}", (uintmax_t) 0xdeadbeef); xo_emit("{e:kve_start/%#jx}", (uintmax_t) 0xdeadbeef);

View File

@ -1 +1 @@
<div class="line"><div class="text">Item </div><div class="data" data-tag="name">one</div><div class="text"> is </div><div class="label">number</div><div class="padding"> </div><div class="data" data-tag="value">001</div><div class="text">, </div><div class="label">color</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="color">red</div></div><div class="line"><div class="text">Item </div><div class="data" data-tag="name">two</div><div class="text"> is </div><div class="label">number</div><div class="padding"> </div><div class="data" data-tag="value">002</div><div class="text">, </div><div class="label">color</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="color">blue</div></div><div class="line"><div class="text">Item </div><div class="data" data-tag="name">three</div><div class="text"> is </div><div class="label">number</div><div class="padding"> </div><div class="data" data-tag="value">003</div><div class="text">, </div><div class="label">color</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="color">green</div></div><div class="line"><div class="text">Item </div><div class="data" data-tag="name">four</div><div class="text"> is </div><div class="label">number</div><div class="padding"> </div><div class="data" data-tag="value">004</div><div class="text">, </div><div class="label">color</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="color">yellow</div></div> <div class="line"><div class="text">Item </div><div class="data" data-tag="name">one</div><div class="text"> is </div><div class="label">number</div><div class="padding"> </div><div class="data" data-tag="value">001</div><div class="text">, </div><div class="label">color</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="color">red</div></div><div class="line"><div class="text">Item </div><div class="data" data-tag="name">two</div><div class="text"> is </div><div class="label">number</div><div class="padding"> </div><div class="data" data-tag="value">002</div><div class="text">, </div><div class="label">color</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="color">blue</div></div><div class="line"><div class="text">Item </div><div class="data" data-tag="name">three</div><div class="text"> is </div><div class="label">number</div><div class="padding"> </div><div class="data" data-tag="value">003</div><div class="text">, </div><div class="label">color</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="color">green</div></div><div class="line"><div class="text">Item </div><div class="data" data-tag="name">four</div><div class="text"> is </div><div class="label">number</div><div class="padding"> </div><div class="data" data-tag="value">004</div><div class="text">, </div><div class="label">color</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="color">yellow</div></div><div class="padding"> </div><div class="line"><div class="data" data-tag="address">0xdeadbeef</div><div class="text">..</div><div class="data" data-tag="foo">1</div></div><div class="padding"> </div><div class="line"><div class="data" data-tag="address">0xdeadbeef</div><div class="text">..</div><div class="data" data-tag="foo">1</div></div><div class="padding"> </div><div class="line"><div class="data" data-tag="address">0xdeadbeef</div><div class="text">..</div><div class="data" data-tag="foo">1</div></div><div class="padding"> </div><div class="line"><div class="data" data-tag="address">0xdeadbeef</div><div class="text">..</div><div class="data" data-tag="foo">1</div></div>

View File

@ -49,4 +49,28 @@
<div class="decoration">:</div> <div class="decoration">:</div>
<div class="padding"> </div> <div class="padding"> </div>
<div class="data" data-tag="color" data-xpath="/top/item[name = 'four']/color">yellow</div> <div class="data" data-tag="color" data-xpath="/top/item[name = 'four']/color">yellow</div>
</div>
<div class="padding"> </div>
<div class="line">
<div class="data" data-tag="address" data-xpath="/anchor/address">0xdeadbeef</div>
<div class="text">..</div>
<div class="data" data-tag="foo" data-xpath="/anchor/foo">1</div>
</div>
<div class="padding"> </div>
<div class="line">
<div class="data" data-tag="address" data-xpath="/anchor/address">0xdeadbeef</div>
<div class="text">..</div>
<div class="data" data-tag="foo" data-xpath="/anchor/foo">1</div>
</div>
<div class="padding"> </div>
<div class="line">
<div class="data" data-tag="address" data-xpath="/anchor/address">0xdeadbeef</div>
<div class="text">..</div>
<div class="data" data-tag="foo" data-xpath="/anchor/foo">1</div>
</div>
<div class="padding"> </div>
<div class="line">
<div class="data" data-tag="address" data-xpath="/anchor/address">0xdeadbeef</div>
<div class="text">..</div>
<div class="data" data-tag="foo" data-xpath="/anchor/foo">1</div>
</div> </div>

View File

@ -49,4 +49,28 @@
<div class="decoration">:</div> <div class="decoration">:</div>
<div class="padding"> </div> <div class="padding"> </div>
<div class="data" data-tag="color">yellow</div> <div class="data" data-tag="color">yellow</div>
</div>
<div class="padding"> </div>
<div class="line">
<div class="data" data-tag="address">0xdeadbeef</div>
<div class="text">..</div>
<div class="data" data-tag="foo">1</div>
</div>
<div class="padding"> </div>
<div class="line">
<div class="data" data-tag="address">0xdeadbeef</div>
<div class="text">..</div>
<div class="data" data-tag="foo">1</div>
</div>
<div class="padding"> </div>
<div class="line">
<div class="data" data-tag="address">0xdeadbeef</div>
<div class="text">..</div>
<div class="data" data-tag="foo">1</div>
</div>
<div class="padding"> </div>
<div class="line">
<div class="data" data-tag="address">0xdeadbeef</div>
<div class="text">..</div>
<div class="data" data-tag="foo">1</div>
</div> </div>

View File

@ -1 +1 @@
"top": {"item": {"name":"one","value":1,"color":"red"}, "item": {"name":"two","value":2,"color":"blue"}, "item": {"name":"three","value":3,"color":"green"}, "item": {"name":"four","value":4,"color":"yellow"}} "top": {"item": {"name":"one","value":1,"color":"red"}, "item": {"name":"two","value":2,"color":"blue"}, "item": {"name":"three","value":3,"color":"green"}, "item": {"name":"four","value":4,"color":"yellow"}, "anchor": {"address":"0xdeadbeef","foo":1}, "anchor": {"address":"0xdeadbeef","foo":1}, "anchor": {"address":"0xdeadbeef","foo":1}, "anchor": {"address":"0xdeadbeef","foo":1}}

View File

@ -18,5 +18,21 @@
"name": "four", "name": "four",
"value": 4, "value": 4,
"color": "yellow" "color": "yellow"
},
"anchor": {
"address": "0xdeadbeef",
"foo": 1
},
"anchor": {
"address": "0xdeadbeef",
"foo": 1
},
"anchor": {
"address": "0xdeadbeef",
"foo": 1
},
"anchor": {
"address": "0xdeadbeef",
"foo": 1
} }
} }

View File

@ -2,3 +2,7 @@ Item one is number 001, color: red
Item two is number 002, color: blue Item two is number 002, color: blue
Item three is number 003, color: green Item three is number 003, color: green
Item four is number 004, color: yellow Item four is number 004, color: yellow
0xdeadbeef..1
0xdeadbeef..1
0xdeadbeef..1
0xdeadbeef..1

View File

@ -1 +1 @@
<top><item><name>one</name><value>1</value><color>red</color></item><item><name>two</name><value>2</value><color>blue</color></item><item><name>three</name><value>3</value><color>green</color></item><item><name>four</name><value>4</value><color>yellow</color></item></top> <top><item><name>one</name><value>1</value><color>red</color></item><item><name>two</name><value>2</value><color>blue</color></item><item><name>three</name><value>3</value><color>green</color></item><item><name>four</name><value>4</value><color>yellow</color></item><anchor><address>0xdeadbeef</address><foo>1</foo></anchor><anchor><address>0xdeadbeef</address><foo>1</foo></anchor><anchor><address>0xdeadbeef</address><foo>1</foo></anchor><anchor><address>0xdeadbeef</address><foo>1</foo></anchor></top>

View File

@ -19,4 +19,20 @@
<value>4</value> <value>4</value>
<color>yellow</color> <color>yellow</color>
</item> </item>
<anchor>
<address>0xdeadbeef</address>
<foo>1</foo>
</anchor>
<anchor>
<address>0xdeadbeef</address>
<foo>1</foo>
</anchor>
<anchor>
<address>0xdeadbeef</address>
<foo>1</foo>
</anchor>
<anchor>
<address>0xdeadbeef</address>
<foo>1</foo>
</anchor>
</top> </top>

View File

@ -24,4 +24,10 @@ for i in one:1:red two:2:blue three:3:green four:4:yellow ; do
NF=--not-first NF=--not-first
done done
${XO} --close top XOAN="${XO} --wrap anchor --not-first --warn --depth 1"
${XOAN} "{[:18}{:address/%p}..{:foo/%u}{]:}\n" 0xdeadbeef 1
${XOAN} "{[:/18}{:address/%p}..{:foo/%u}{]:}\n" 0xdeadbeef 1
${XOAN} "{[:/%d}{:address/%p}..{:foo/%u}{]:}\n" 18 0xdeadbeef 1
${XOAN} "{[:/%s}{:address/%p}..{:foo/%u}{]:}\n" 18 0xdeadbeef 1
${XO} --close top

10
xo/xo.1
View File

@ -188,3 +188,13 @@ prepend data to the XPath values used for HTML output style.
.Xr libxo 3 , .Xr libxo 3 ,
.Xr xo_emit 3 , .Xr xo_emit 3 ,
.Xr xo_options 7 .Xr xo_options 7
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -19,7 +19,8 @@
.Op Fl "b <base>" .Op Fl "b <base>"
.Op Fl "c" <command>" .Op Fl "c" <command>"
.Op Fl "f" <output> .Op Fl "f" <output>
.Op Ar command argument... .Op Fl "w"
.Op Ar command [argument ...]
.Sh DESCRIPTION .Sh DESCRIPTION
.Nm .Nm
is a tool for preparing is a tool for preparing
@ -69,6 +70,12 @@ command is used directly.
.It Ic -f Ar file | Ic --file Ar file .It Ic -f Ar file | Ic --file Ar file
Output is saved to the given file, rather than to the standard output Output is saved to the given file, rather than to the standard output
descriptor. descriptor.
.It Ic -w | --web
Uses the official
.Nm libxo
website URL as the source path for the CSS and Javascript files
referenced in the output of
.Nm xohtml .
.El .El
.Pp .Pp
.Sh EXAMPLES .Sh EXAMPLES

View File

@ -10,8 +10,10 @@
# #
BASE=@XO_SHAREDIR@ BASE=@XO_SHAREDIR@
VERSION=@LIBXO_VERSION@
CMD=cat CMD=cat
DONE= DONE=
WEB=http://juniper.github.io/libxo/${VERSION}/xohtml
do_help () { do_help () {
echo "xohtml: wrap libxo-enabled output in HTML" echo "xohtml: wrap libxo-enabled output in HTML"
@ -41,6 +43,11 @@ while [ -z "$DONE" -a ! -z "$1" ]; do
shift; shift;
exec > "$FILE"; exec > "$FILE";
;; ;;
-w|--web)
shift;
BASE="${WEB}";
;;
-*) -*)
do_help do_help
;; ;;

View File

@ -77,3 +77,13 @@ line that contains the error:
.Sh SEE ALSO .Sh SEE ALSO
.Xr libxo 3 , .Xr libxo 3 ,
.Xr xo_emit 3 .Xr xo_emit 3
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .

View File

@ -75,3 +75,13 @@ Display version information
.Sh SEE ALSO .Sh SEE ALSO
.Xr libxo 3 , .Xr libxo 3 ,
.Xr xo_format 5 .Xr xo_format 5
.Sh HISTORY
The
.Nm libxo
library first appeared in
.Fx 11.0 .
.Sh AUTHORS
.Nm libxo
was written by
.An Phil Shafer Aq Mt phil@freebsd.org .