142ff34c3SPhil Shafer /*
242ff34c3SPhil Shafer * Copyright (c) 2014, Juniper Networks, Inc.
342ff34c3SPhil Shafer * All rights reserved.
442ff34c3SPhil Shafer * This SOFTWARE is licensed under the LICENSE provided in the
542ff34c3SPhil Shafer * ../Copyright file. By downloading, installing, copying, or otherwise
642ff34c3SPhil Shafer * using the SOFTWARE, you agree to be bound by the terms of that
742ff34c3SPhil Shafer * LICENSE.
842ff34c3SPhil Shafer * Phil Shafer, July 2014
942ff34c3SPhil Shafer */
1042ff34c3SPhil Shafer
1142ff34c3SPhil Shafer #include <stdio.h>
1242ff34c3SPhil Shafer #include <stdlib.h>
1342ff34c3SPhil Shafer #include <stdint.h>
1442ff34c3SPhil Shafer #include <string.h>
1542ff34c3SPhil Shafer
1642ff34c3SPhil Shafer #include "xo_config.h"
1742ff34c3SPhil Shafer #include "xo.h"
1876afb20cSPhil Shafer #include "xo_encoder.h"
1942ff34c3SPhil Shafer
2042ff34c3SPhil Shafer int
main(int argc,char ** argv)2142ff34c3SPhil Shafer main (int argc, char **argv)
2242ff34c3SPhil Shafer {
2342ff34c3SPhil Shafer int i, count = 10;
2442ff34c3SPhil Shafer int mon = 0;
2542ff34c3SPhil Shafer xo_emit_flags_t flags = XOEF_RETAIN;
26f2b7bf8aSPhil Shafer int opt_color = 1;
2742ff34c3SPhil Shafer
28*5c5819b2SPhil Shafer xo_set_program("test_12");
29*5c5819b2SPhil Shafer
3042ff34c3SPhil Shafer argc = xo_parse_args(argc, argv);
3142ff34c3SPhil Shafer if (argc < 0)
3242ff34c3SPhil Shafer return 1;
3342ff34c3SPhil Shafer
3442ff34c3SPhil Shafer for (argc = 1; argv[argc]; argc++) {
3576afb20cSPhil Shafer if (xo_streq(argv[argc], "xml"))
3642ff34c3SPhil Shafer xo_set_style(NULL, XO_STYLE_XML);
3776afb20cSPhil Shafer else if (xo_streq(argv[argc], "json"))
3842ff34c3SPhil Shafer xo_set_style(NULL, XO_STYLE_JSON);
3976afb20cSPhil Shafer else if (xo_streq(argv[argc], "text"))
4042ff34c3SPhil Shafer xo_set_style(NULL, XO_STYLE_TEXT);
4176afb20cSPhil Shafer else if (xo_streq(argv[argc], "html"))
4242ff34c3SPhil Shafer xo_set_style(NULL, XO_STYLE_HTML);
4376afb20cSPhil Shafer else if (xo_streq(argv[argc], "no-color"))
44f2b7bf8aSPhil Shafer opt_color = 0;
4576afb20cSPhil Shafer else if (xo_streq(argv[argc], "pretty"))
4642ff34c3SPhil Shafer xo_set_flags(NULL, XOF_PRETTY);
4776afb20cSPhil Shafer else if (xo_streq(argv[argc], "xpath"))
4842ff34c3SPhil Shafer xo_set_flags(NULL, XOF_XPATH);
4976afb20cSPhil Shafer else if (xo_streq(argv[argc], "info"))
5042ff34c3SPhil Shafer xo_set_flags(NULL, XOF_INFO);
5176afb20cSPhil Shafer else if (xo_streq(argv[argc], "no-retain"))
5242ff34c3SPhil Shafer flags &= ~XOEF_RETAIN;
5376afb20cSPhil Shafer else if (xo_streq(argv[argc], "big")) {
5442ff34c3SPhil Shafer if (argv[argc + 1])
5542ff34c3SPhil Shafer count = atoi(argv[++argc]);
5642ff34c3SPhil Shafer }
5742ff34c3SPhil Shafer }
5842ff34c3SPhil Shafer
5942ff34c3SPhil Shafer xo_set_flags(NULL, XOF_UNITS); /* Always test w/ this */
60f2b7bf8aSPhil Shafer if (opt_color)
61f2b7bf8aSPhil Shafer xo_set_flags(NULL, XOF_COLOR); /* Force color output */
6242ff34c3SPhil Shafer xo_set_file(stdout);
6342ff34c3SPhil Shafer
6442ff34c3SPhil Shafer xo_open_container("top");
6542ff34c3SPhil Shafer xo_open_container("data");
6642ff34c3SPhil Shafer
67f2b7bf8aSPhil Shafer xo_emit("{C:fg-red,bg-green}Merry XMas!!{C:}\n");
68f2b7bf8aSPhil Shafer
69f2b7bf8aSPhil Shafer xo_emit("One {C:fg-yellow,bg-blue}{:animal}{C:}, "
70f2b7bf8aSPhil Shafer "Two {C:fg-green,bg-yellow}{:animal}{C:}\n",
71f2b7bf8aSPhil Shafer "fish", "fish");
72f2b7bf8aSPhil Shafer
7342ff34c3SPhil Shafer const char *fmt1 = "The {C:fg-red}{k:name}{C:reset} is "
7442ff34c3SPhil Shafer "{C:/fg-%s}{:color}{C:reset} til {:time/%02d:%02d}\n";
7542ff34c3SPhil Shafer const char *fmt2 = "My {C:fg-red}{:hand}{C:reset} hand is "
7642ff34c3SPhil Shafer "{C:/fg-%s}{:color}{C:reset} til {:time/%02d:%02d}\n";
7742ff34c3SPhil Shafer
7842ff34c3SPhil Shafer for (i = 0; i < count; i++) {
7942ff34c3SPhil Shafer xo_open_instance("thing");
8042ff34c3SPhil Shafer xo_emit_f(flags, fmt1, "thing", "green", "green", 2, 15);
8142ff34c3SPhil Shafer xo_emit_f(flags, fmt2, "left", "blue", "blue", 3, 45);
8242ff34c3SPhil Shafer }
8342ff34c3SPhil Shafer
84406a584dSPhil Shafer xo_open_container("2by4");
85406a584dSPhil Shafer xo_emit("There is {:4x4} in {:2morrow}\n", "truck", "tomorrow");
86406a584dSPhil Shafer xo_close_container("2by4");
87406a584dSPhil Shafer
88406a584dSPhil Shafer
8942ff34c3SPhil Shafer xo_close_container("data");
9042ff34c3SPhil Shafer xo_close_container_h(NULL, "top");
9142ff34c3SPhil Shafer
9242ff34c3SPhil Shafer xo_finish();
9342ff34c3SPhil Shafer
9442ff34c3SPhil Shafer return 0;
9542ff34c3SPhil Shafer }
96