xref: /freebsd/contrib/libxo/tests/core/test_12.c (revision 773bec086828bf0f1ba663958853823f7a059fb5)
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