Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/libxo/tests/core/test_12.c
39537 views
1
/*
2
* Copyright (c) 2014, Juniper Networks, Inc.
3
* All rights reserved.
4
* This SOFTWARE is licensed under the LICENSE provided in the
5
* ../Copyright file. By downloading, installing, copying, or otherwise
6
* using the SOFTWARE, you agree to be bound by the terms of that
7
* LICENSE.
8
* Phil Shafer, July 2014
9
*/
10
11
#include <stdio.h>
12
#include <stdlib.h>
13
#include <stdint.h>
14
#include <string.h>
15
16
#include "xo_config.h"
17
#include "xo.h"
18
#include "xo_encoder.h"
19
20
int
21
main (int argc, char **argv)
22
{
23
int i, count = 10;
24
int mon = 0;
25
xo_emit_flags_t flags = XOEF_RETAIN;
26
int opt_color = 1;
27
28
xo_set_program("test_12");
29
30
argc = xo_parse_args(argc, argv);
31
if (argc < 0)
32
return 1;
33
34
for (argc = 1; argv[argc]; argc++) {
35
if (xo_streq(argv[argc], "xml"))
36
xo_set_style(NULL, XO_STYLE_XML);
37
else if (xo_streq(argv[argc], "json"))
38
xo_set_style(NULL, XO_STYLE_JSON);
39
else if (xo_streq(argv[argc], "text"))
40
xo_set_style(NULL, XO_STYLE_TEXT);
41
else if (xo_streq(argv[argc], "html"))
42
xo_set_style(NULL, XO_STYLE_HTML);
43
else if (xo_streq(argv[argc], "no-color"))
44
opt_color = 0;
45
else if (xo_streq(argv[argc], "pretty"))
46
xo_set_flags(NULL, XOF_PRETTY);
47
else if (xo_streq(argv[argc], "xpath"))
48
xo_set_flags(NULL, XOF_XPATH);
49
else if (xo_streq(argv[argc], "info"))
50
xo_set_flags(NULL, XOF_INFO);
51
else if (xo_streq(argv[argc], "no-retain"))
52
flags &= ~XOEF_RETAIN;
53
else if (xo_streq(argv[argc], "big")) {
54
if (argv[argc + 1])
55
count = atoi(argv[++argc]);
56
}
57
}
58
59
xo_set_flags(NULL, XOF_UNITS); /* Always test w/ this */
60
if (opt_color)
61
xo_set_flags(NULL, XOF_COLOR); /* Force color output */
62
xo_set_file(stdout);
63
64
xo_open_container("top");
65
xo_open_container("data");
66
67
xo_emit("{C:fg-red,bg-green}Merry XMas!!{C:}\n");
68
69
xo_emit("One {C:fg-yellow,bg-blue}{:animal}{C:}, "
70
"Two {C:fg-green,bg-yellow}{:animal}{C:}\n",
71
"fish", "fish");
72
73
const char *fmt1 = "The {C:fg-red}{k:name}{C:reset} is "
74
"{C:/fg-%s}{:color}{C:reset} til {:time/%02d:%02d}\n";
75
const char *fmt2 = "My {C:fg-red}{:hand}{C:reset} hand is "
76
"{C:/fg-%s}{:color}{C:reset} til {:time/%02d:%02d}\n";
77
78
for (i = 0; i < count; i++) {
79
xo_open_instance("thing");
80
xo_emit_f(flags, fmt1, "thing", "green", "green", 2, 15);
81
xo_emit_f(flags, fmt2, "left", "blue", "blue", 3, 45);
82
}
83
84
xo_open_container("2by4");
85
xo_emit("There is {:4x4} in {:2morrow}\n", "truck", "tomorrow");
86
xo_close_container("2by4");
87
88
89
xo_close_container("data");
90
xo_close_container_h(NULL, "top");
91
92
xo_finish();
93
94
return 0;
95
}
96
97