1298077Sphil/*
2298077Sphil * Copyright (c) 2014, Juniper Networks, Inc.
3298077Sphil * All rights reserved.
4298077Sphil * This SOFTWARE is licensed under the LICENSE provided in the
5298077Sphil * ../Copyright file. By downloading, installing, copying, or otherwise
6298077Sphil * using the SOFTWARE, you agree to be bound by the terms of that
7298077Sphil * LICENSE.
8298077Sphil * Phil Shafer, July 2014
9298077Sphil */
10298077Sphil
11298077Sphil#include <stdio.h>
12298077Sphil#include <stdlib.h>
13298077Sphil#include <stdint.h>
14298077Sphil#include <string.h>
15298077Sphil
16298077Sphil#include "xo_config.h"
17298077Sphil#include "xo.h"
18298077Sphil
19298077Sphilint
20298077Sphilmain (int argc, char **argv)
21298077Sphil{
22298077Sphil    int i, count = 10;
23298077Sphil    int mon = 0;
24298077Sphil    xo_emit_flags_t flags = XOEF_RETAIN;
25322172Sphil    int opt_color = 1;
26298077Sphil
27298077Sphil    argc = xo_parse_args(argc, argv);
28298077Sphil    if (argc < 0)
29298077Sphil	return 1;
30298077Sphil
31298077Sphil    for (argc = 1; argv[argc]; argc++) {
32298077Sphil	if (strcmp(argv[argc], "xml") == 0)
33298077Sphil	    xo_set_style(NULL, XO_STYLE_XML);
34298077Sphil	else if (strcmp(argv[argc], "json") == 0)
35298077Sphil	    xo_set_style(NULL, XO_STYLE_JSON);
36298077Sphil	else if (strcmp(argv[argc], "text") == 0)
37298077Sphil	    xo_set_style(NULL, XO_STYLE_TEXT);
38298077Sphil	else if (strcmp(argv[argc], "html") == 0)
39298077Sphil	    xo_set_style(NULL, XO_STYLE_HTML);
40322172Sphil	else if (strcmp(argv[argc], "no-color") == 0)
41322172Sphil	    opt_color = 0;
42298077Sphil	else if (strcmp(argv[argc], "pretty") == 0)
43298077Sphil	    xo_set_flags(NULL, XOF_PRETTY);
44298077Sphil	else if (strcmp(argv[argc], "xpath") == 0)
45298077Sphil	    xo_set_flags(NULL, XOF_XPATH);
46298077Sphil	else if (strcmp(argv[argc], "info") == 0)
47298077Sphil	    xo_set_flags(NULL, XOF_INFO);
48298077Sphil	else if (strcmp(argv[argc], "no-retain") == 0)
49298077Sphil	    flags &= ~XOEF_RETAIN;
50298077Sphil	else if (strcmp(argv[argc], "big") == 0) {
51298077Sphil	    if (argv[argc + 1])
52298077Sphil		count = atoi(argv[++argc]);
53298077Sphil	}
54298077Sphil    }
55298077Sphil
56298077Sphil    xo_set_flags(NULL, XOF_UNITS); /* Always test w/ this */
57322172Sphil    if (opt_color)
58322172Sphil	xo_set_flags(NULL, XOF_COLOR); /* Force color output */
59298077Sphil    xo_set_file(stdout);
60298077Sphil
61298077Sphil    xo_open_container("top");
62298077Sphil    xo_open_container("data");
63298077Sphil
64322172Sphil    xo_emit("{C:fg-red,bg-green}Merry XMas!!{C:}\n");
65322172Sphil
66322172Sphil    xo_emit("One {C:fg-yellow,bg-blue}{:animal}{C:}, "
67322172Sphil	    "Two {C:fg-green,bg-yellow}{:animal}{C:}\n",
68322172Sphil          "fish", "fish");
69322172Sphil
70298077Sphil    const char *fmt1 = "The {C:fg-red}{k:name}{C:reset} is "
71298077Sphil	"{C:/fg-%s}{:color}{C:reset} til {:time/%02d:%02d}\n";
72298077Sphil    const char *fmt2 = "My {C:fg-red}{:hand}{C:reset} hand is "
73298077Sphil	"{C:/fg-%s}{:color}{C:reset} til {:time/%02d:%02d}\n";
74298077Sphil
75298077Sphil    for (i = 0; i < count; i++) {
76298077Sphil	xo_open_instance("thing");
77298077Sphil	xo_emit_f(flags, fmt1, "thing", "green", "green", 2, 15);
78298077Sphil	xo_emit_f(flags, fmt2, "left", "blue", "blue", 3, 45);
79298077Sphil    }
80298077Sphil
81298077Sphil    xo_close_container("data");
82298077Sphil    xo_close_container_h(NULL, "top");
83298077Sphil
84298077Sphil    xo_finish();
85298077Sphil
86298077Sphil    return 0;
87298077Sphil}
88