mirror of https://github.com/F-Stack/f-stack.git
116 lines
2.6 KiB
C
116 lines
2.6 KiB
C
/*
|
|
* Copyright (c) 2015, Juniper Networks, Inc.
|
|
* All rights reserved.
|
|
* This SOFTWARE is licensed under the LICENSE provided in the
|
|
* ../Copyright file. By downloading, installing, copying, or otherwise
|
|
* using the SOFTWARE, you agree to be bound by the terms of that
|
|
* LICENSE.
|
|
* Phil Shafer, July 2015
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
#include <errno.h>
|
|
|
|
#include "xo.h"
|
|
#include "xo_encoder.h"
|
|
|
|
int
|
|
main (int argc, char **argv)
|
|
{
|
|
struct item {
|
|
const char *i_title;
|
|
int i_count;
|
|
};
|
|
struct item list[] = {
|
|
{ "gum", 1412 },
|
|
{ "rope", 85 },
|
|
{ "ladder", 0 },
|
|
{ "bolt", 4123 },
|
|
{ "water", 17 },
|
|
{ NULL, 0 }
|
|
};
|
|
struct item *ip;
|
|
int i;
|
|
|
|
argc = xo_parse_args(argc, argv);
|
|
if (argc < 0)
|
|
return 1;
|
|
|
|
for (argc = 1; argv[argc]; argc++) {
|
|
if (xo_streq(argv[argc], "xml"))
|
|
xo_set_style(NULL, XO_STYLE_XML);
|
|
else if (xo_streq(argv[argc], "json"))
|
|
xo_set_style(NULL, XO_STYLE_JSON);
|
|
else if (xo_streq(argv[argc], "text"))
|
|
xo_set_style(NULL, XO_STYLE_TEXT);
|
|
else if (xo_streq(argv[argc], "html"))
|
|
xo_set_style(NULL, XO_STYLE_HTML);
|
|
else if (xo_streq(argv[argc], "pretty"))
|
|
xo_set_flags(NULL, XOF_PRETTY);
|
|
else if (xo_streq(argv[argc], "xpath"))
|
|
xo_set_flags(NULL, XOF_XPATH);
|
|
else if (xo_streq(argv[argc], "info"))
|
|
xo_set_flags(NULL, XOF_INFO);
|
|
else if (xo_streq(argv[argc], "error")) {
|
|
close(-1);
|
|
xo_err(1, "error detected");
|
|
}
|
|
}
|
|
|
|
xo_set_flags(NULL, XOF_KEYS);
|
|
xo_set_program("test");
|
|
|
|
xo_open_container_h(NULL, "top");
|
|
|
|
xo_open_container("data");
|
|
xo_open_container("contents");
|
|
|
|
xo_emit("{T:Item/%-10s}{T:Count/%12s}\n");
|
|
|
|
for (ip = list; ip->i_title; ip++) {
|
|
xo_emit("Name: {l:name/%-10s/%s}\n", ip->i_title);
|
|
}
|
|
|
|
xo_close_container("contents");
|
|
|
|
xo_emit("\n\n");
|
|
xo_open_container("contents");
|
|
|
|
xo_emit("{T:Item/%-10s}{T:Count/%12s}\n");
|
|
|
|
for (ip = list; ip->i_title; ip++) {
|
|
xo_emit("Name: {l:item/%-10s/%s}\n", ip->i_title);
|
|
}
|
|
|
|
xo_close_container("contents");
|
|
|
|
xo_emit("\n\n");
|
|
|
|
xo_open_container("contents");
|
|
xo_emit("{T:Test/%-10s}{T:Three/%12s}\n");
|
|
|
|
xo_open_list("item");
|
|
for (ip = list; ip->i_title; ip++) {
|
|
xo_emit("Name: {l:item/%-10s/%s}\n", ip->i_title);
|
|
}
|
|
xo_emit("{Lwc:/Total:}{:total}\n", "six");
|
|
|
|
xo_emit("{:one}", "one");
|
|
xo_emit("{l:two}", "two");
|
|
xo_emit("{:three}", "three");
|
|
|
|
|
|
xo_close_container("contents");
|
|
|
|
xo_emit("\n\n");
|
|
|
|
xo_close_container_h(NULL, "top");
|
|
|
|
xo_finish();
|
|
|
|
return 0;
|
|
}
|