1545ddfbeSMarcel Moolenaar /*
2545ddfbeSMarcel Moolenaar * Copyright (c) 2015, Juniper Networks, Inc.
3545ddfbeSMarcel Moolenaar * All rights reserved.
4545ddfbeSMarcel Moolenaar * This SOFTWARE is licensed under the LICENSE provided in the
5545ddfbeSMarcel Moolenaar * ../Copyright file. By downloading, installing, copying, or otherwise
6545ddfbeSMarcel Moolenaar * using the SOFTWARE, you agree to be bound by the terms of that
7545ddfbeSMarcel Moolenaar * LICENSE.
8545ddfbeSMarcel Moolenaar * Phil Shafer, July 2015
9545ddfbeSMarcel Moolenaar */
10545ddfbeSMarcel Moolenaar
11545ddfbeSMarcel Moolenaar #include <stdio.h>
12545ddfbeSMarcel Moolenaar #include <stdlib.h>
13545ddfbeSMarcel Moolenaar #include <string.h>
14545ddfbeSMarcel Moolenaar #include <unistd.h>
15545ddfbeSMarcel Moolenaar #include <errno.h>
16545ddfbeSMarcel Moolenaar
17545ddfbeSMarcel Moolenaar #include "xo.h"
18*76afb20cSPhil Shafer #include "xo_encoder.h"
19545ddfbeSMarcel Moolenaar
20545ddfbeSMarcel Moolenaar int
main(int argc,char ** argv)21545ddfbeSMarcel Moolenaar main (int argc, char **argv)
22545ddfbeSMarcel Moolenaar {
23545ddfbeSMarcel Moolenaar struct item {
24545ddfbeSMarcel Moolenaar const char *i_title;
25545ddfbeSMarcel Moolenaar int i_count;
26545ddfbeSMarcel Moolenaar };
27545ddfbeSMarcel Moolenaar struct item list[] = {
28545ddfbeSMarcel Moolenaar { "gum", 1412 },
29545ddfbeSMarcel Moolenaar { "rope", 85 },
30545ddfbeSMarcel Moolenaar { "ladder", 0 },
31545ddfbeSMarcel Moolenaar { "bolt", 4123 },
32545ddfbeSMarcel Moolenaar { "water", 17 },
33545ddfbeSMarcel Moolenaar { NULL, 0 }
34545ddfbeSMarcel Moolenaar };
35545ddfbeSMarcel Moolenaar struct item *ip;
36545ddfbeSMarcel Moolenaar int i;
37545ddfbeSMarcel Moolenaar
38545ddfbeSMarcel Moolenaar argc = xo_parse_args(argc, argv);
39545ddfbeSMarcel Moolenaar if (argc < 0)
40545ddfbeSMarcel Moolenaar return 1;
41545ddfbeSMarcel Moolenaar
42545ddfbeSMarcel Moolenaar for (argc = 1; argv[argc]; argc++) {
43*76afb20cSPhil Shafer if (xo_streq(argv[argc], "xml"))
44545ddfbeSMarcel Moolenaar xo_set_style(NULL, XO_STYLE_XML);
45*76afb20cSPhil Shafer else if (xo_streq(argv[argc], "json"))
46545ddfbeSMarcel Moolenaar xo_set_style(NULL, XO_STYLE_JSON);
47*76afb20cSPhil Shafer else if (xo_streq(argv[argc], "text"))
48545ddfbeSMarcel Moolenaar xo_set_style(NULL, XO_STYLE_TEXT);
49*76afb20cSPhil Shafer else if (xo_streq(argv[argc], "html"))
50545ddfbeSMarcel Moolenaar xo_set_style(NULL, XO_STYLE_HTML);
51*76afb20cSPhil Shafer else if (xo_streq(argv[argc], "pretty"))
52545ddfbeSMarcel Moolenaar xo_set_flags(NULL, XOF_PRETTY);
53*76afb20cSPhil Shafer else if (xo_streq(argv[argc], "xpath"))
54545ddfbeSMarcel Moolenaar xo_set_flags(NULL, XOF_XPATH);
55*76afb20cSPhil Shafer else if (xo_streq(argv[argc], "info"))
56545ddfbeSMarcel Moolenaar xo_set_flags(NULL, XOF_INFO);
57*76afb20cSPhil Shafer else if (xo_streq(argv[argc], "error")) {
58545ddfbeSMarcel Moolenaar close(-1);
59545ddfbeSMarcel Moolenaar xo_err(1, "error detected");
60545ddfbeSMarcel Moolenaar }
61545ddfbeSMarcel Moolenaar }
62545ddfbeSMarcel Moolenaar
63545ddfbeSMarcel Moolenaar xo_set_flags(NULL, XOF_KEYS);
64545ddfbeSMarcel Moolenaar xo_set_program("test");
65545ddfbeSMarcel Moolenaar
66545ddfbeSMarcel Moolenaar xo_open_container_h(NULL, "top");
67545ddfbeSMarcel Moolenaar
68545ddfbeSMarcel Moolenaar xo_open_container("data");
69545ddfbeSMarcel Moolenaar xo_open_container("contents");
70545ddfbeSMarcel Moolenaar
71545ddfbeSMarcel Moolenaar xo_emit("{T:Item/%-10s}{T:Count/%12s}\n");
72545ddfbeSMarcel Moolenaar
73545ddfbeSMarcel Moolenaar for (ip = list; ip->i_title; ip++) {
74545ddfbeSMarcel Moolenaar xo_emit("Name: {l:name/%-10s/%s}\n", ip->i_title);
75545ddfbeSMarcel Moolenaar }
76545ddfbeSMarcel Moolenaar
77545ddfbeSMarcel Moolenaar xo_close_container("contents");
78545ddfbeSMarcel Moolenaar
79545ddfbeSMarcel Moolenaar xo_emit("\n\n");
80545ddfbeSMarcel Moolenaar xo_open_container("contents");
81545ddfbeSMarcel Moolenaar
82545ddfbeSMarcel Moolenaar xo_emit("{T:Item/%-10s}{T:Count/%12s}\n");
83545ddfbeSMarcel Moolenaar
84545ddfbeSMarcel Moolenaar for (ip = list; ip->i_title; ip++) {
85545ddfbeSMarcel Moolenaar xo_emit("Name: {l:item/%-10s/%s}\n", ip->i_title);
86545ddfbeSMarcel Moolenaar }
87545ddfbeSMarcel Moolenaar
88545ddfbeSMarcel Moolenaar xo_close_container("contents");
89545ddfbeSMarcel Moolenaar
90545ddfbeSMarcel Moolenaar xo_emit("\n\n");
91545ddfbeSMarcel Moolenaar
92545ddfbeSMarcel Moolenaar xo_open_container("contents");
93545ddfbeSMarcel Moolenaar xo_emit("{T:Test/%-10s}{T:Three/%12s}\n");
94545ddfbeSMarcel Moolenaar
95545ddfbeSMarcel Moolenaar xo_open_list("item");
96545ddfbeSMarcel Moolenaar for (ip = list; ip->i_title; ip++) {
97545ddfbeSMarcel Moolenaar xo_emit("Name: {l:item/%-10s/%s}\n", ip->i_title);
98545ddfbeSMarcel Moolenaar }
99545ddfbeSMarcel Moolenaar xo_emit("{Lwc:/Total:}{:total}\n", "six");
100545ddfbeSMarcel Moolenaar
101545ddfbeSMarcel Moolenaar xo_emit("{:one}", "one");
102545ddfbeSMarcel Moolenaar xo_emit("{l:two}", "two");
103545ddfbeSMarcel Moolenaar xo_emit("{:three}", "three");
104545ddfbeSMarcel Moolenaar
105545ddfbeSMarcel Moolenaar
106545ddfbeSMarcel Moolenaar xo_close_container("contents");
107545ddfbeSMarcel Moolenaar
108545ddfbeSMarcel Moolenaar xo_emit("\n\n");
109545ddfbeSMarcel Moolenaar
110545ddfbeSMarcel Moolenaar xo_close_container_h(NULL, "top");
111545ddfbeSMarcel Moolenaar
112545ddfbeSMarcel Moolenaar xo_finish();
113545ddfbeSMarcel Moolenaar
114545ddfbeSMarcel Moolenaar return 0;
115545ddfbeSMarcel Moolenaar }
116