aboutsummaryrefslogtreecommitdiff
path: root/contrib/libxo/tests
diff options
context:
space:
mode:
authorMarcel Moolenaar <marcel@FreeBSD.org>2015-04-27 17:23:19 +0000
committerMarcel Moolenaar <marcel@FreeBSD.org>2015-04-27 17:23:19 +0000
commit788ca347b816afd83b2885e0c79aeeb88649b2ab (patch)
tree2743e923a1c968c5a2a8292b75bf32c2e50bfbb3 /contrib/libxo/tests
parent483117a6464dae1a36a96520adb50a53d7efb725 (diff)
Upgrade libxo to 0.3.2.
Obtained from: https://github.com/Juniper/libxo/tree/0.3.2 Requested by: Phil Shafer <phil@juniper.net> This import incorporates local change 279966. Local change 276260 has been merged-in.
Notes
Notes: svn path=/head/; revision=282100
Diffstat (limited to 'contrib/libxo/tests')
-rw-r--r--contrib/libxo/tests/core/Makefile.am4
-rw-r--r--contrib/libxo/tests/core/saved/test_01.JP.out6
-rw-r--r--contrib/libxo/tests/core/saved/test_02.JP.out4
-rw-r--r--contrib/libxo/tests/core/saved/test_05.H.out2
-rw-r--r--contrib/libxo/tests/core/saved/test_05.HIPx.out59
-rw-r--r--contrib/libxo/tests/core/saved/test_05.HP.out59
-rw-r--r--contrib/libxo/tests/core/saved/test_05.J.out2
-rw-r--r--contrib/libxo/tests/core/saved/test_05.JP.out16
-rw-r--r--contrib/libxo/tests/core/saved/test_05.T.out10
-rw-r--r--contrib/libxo/tests/core/saved/test_05.X.out2
-rw-r--r--contrib/libxo/tests/core/saved/test_05.XP.out16
-rw-r--r--contrib/libxo/tests/core/saved/test_09.JP.out20
-rw-r--r--contrib/libxo/tests/core/saved/test_10.H.err0
-rw-r--r--contrib/libxo/tests/core/saved/test_10.H.out1
-rw-r--r--contrib/libxo/tests/core/saved/test_10.HIPx.err0
-rw-r--r--contrib/libxo/tests/core/saved/test_10.HIPx.out316
-rw-r--r--contrib/libxo/tests/core/saved/test_10.HP.err0
-rw-r--r--contrib/libxo/tests/core/saved/test_10.HP.out316
-rw-r--r--contrib/libxo/tests/core/saved/test_10.J.err0
-rw-r--r--contrib/libxo/tests/core/saved/test_10.J.out2
-rw-r--r--contrib/libxo/tests/core/saved/test_10.JP.err0
-rw-r--r--contrib/libxo/tests/core/saved/test_10.JP.out113
-rw-r--r--contrib/libxo/tests/core/saved/test_10.T.err0
-rw-r--r--contrib/libxo/tests/core/saved/test_10.T.out48
-rw-r--r--contrib/libxo/tests/core/saved/test_10.X.err0
-rw-r--r--contrib/libxo/tests/core/saved/test_10.X.out1
-rw-r--r--contrib/libxo/tests/core/saved/test_10.XP.err0
-rw-r--r--contrib/libxo/tests/core/saved/test_10.XP.out100
-rw-r--r--contrib/libxo/tests/core/saved/test_10.err0
-rw-r--r--contrib/libxo/tests/core/saved/test_10.out38
-rw-r--r--contrib/libxo/tests/core/test_05.c17
-rw-r--r--contrib/libxo/tests/core/test_10.c212
32 files changed, 1353 insertions, 11 deletions
diff --git a/contrib/libxo/tests/core/Makefile.am b/contrib/libxo/tests/core/Makefile.am
index f145d183d81c..92f5f364b74b 100644
--- a/contrib/libxo/tests/core/Makefile.am
+++ b/contrib/libxo/tests/core/Makefile.am
@@ -20,7 +20,8 @@ test_05.c \
test_06.c \
test_07.c \
test_08.c \
-test_09.c
+test_09.c \
+test_10.c
test_01_test_SOURCES = test_01.c
test_02_test_SOURCES = test_02.c
@@ -31,6 +32,7 @@ test_06_test_SOURCES = test_06.c
test_07_test_SOURCES = test_07.c
test_08_test_SOURCES = test_08.c
test_09_test_SOURCES = test_09.c
+test_10_test_SOURCES = test_10.c
# TEST_CASES := $(shell cd ${srcdir} ; echo *.c )
diff --git a/contrib/libxo/tests/core/saved/test_01.JP.out b/contrib/libxo/tests/core/saved/test_01.JP.out
index e1fd2318d670..479006525306 100644
--- a/contrib/libxo/tests/core/saved/test_01.JP.out
+++ b/contrib/libxo/tests/core/saved/test_01.JP.out
@@ -91,7 +91,11 @@
},
"data": {
"item": [
- "gum", "rope", "ladder", "bolt", "water"
+ "gum",
+ "rope",
+ "ladder",
+ "bolt",
+ "water"
]
},
"cost": 425,
diff --git a/contrib/libxo/tests/core/saved/test_02.JP.out b/contrib/libxo/tests/core/saved/test_02.JP.out
index 21b168bdad77..ade2dc22c81f 100644
--- a/contrib/libxo/tests/core/saved/test_02.JP.out
+++ b/contrib/libxo/tests/core/saved/test_02.JP.out
@@ -26,7 +26,9 @@
"cur": 20,
"max": 125,
"flag": [
- "one", "two", "three"
+ "one",
+ "two",
+ "three"
],
"empty-tag": true,
"t1": "1000",
diff --git a/contrib/libxo/tests/core/saved/test_05.H.out b/contrib/libxo/tests/core/saved/test_05.H.out
index b75d728878b4..136b95601ce8 100644
--- a/contrib/libxo/tests/core/saved/test_05.H.out
+++ b/contrib/libxo/tests/core/saved/test_05.H.out
@@ -1 +1 @@
-<div class="line"><div class="text">Οὐχὶ ταὐτὰ παρίσταταί μοι </div><div class="data" data-tag="v1">γιγνώσκειν</div><div class="text">, </div><div class="data" data-tag="v2">ὦ ἄνδρες ᾿Αθηναῖοι</div></div><div class="line"><div class="text">გთხოვთ </div><div class="data" data-tag="v1">ახლავე გაიაროთ რეგისტრაცია</div><div class="text"> </div><div class="data" data-tag="v2">Unicode-ის მეათე საერთაშორისო</div></div><div class="line"><div class="title">First Name </div><div class="title">Last Name </div><div class="title">Department </div><div class="title">Time (%)</div></div><div class="line"><div class="data" data-tag="first-name">Jim</div><div class="text"> (</div><div class="data" data-tag="nic-name">"რეგტ"</div><div class="text">)</div><div class="padding"> </div><div class="data" data-tag="last-name">გთხოვთ ახ </div><div class="data" data-tag="department"> 431</div><div class="data" data-tag="percent-time"> 90</div></div><div class="line"><div class="data" data-tag="first-name">Terry</div><div class="text"> (</div><div class="data" data-tag="nic-name">"&lt;one"</div><div class="text">)</div><div class="padding"> </div><div class="data" data-tag="last-name">Οὐχὶ ταὐτὰ παρ</div><div class="data" data-tag="department"> 660</div><div class="data" data-tag="percent-time"> 90</div></div><div class="line"><div class="data" data-tag="first-name">Leslie</div><div class="text"> (</div><div class="data" data-tag="nic-name">"Les"</div><div class="text">)</div><div class="padding"> </div><div class="data" data-tag="last-name">Patterson </div><div class="data" data-tag="department"> 341</div><div class="data" data-tag="percent-time"> 60</div></div><div class="line"><div class="data" data-tag="first-name">Ashley</div><div class="text"> (</div><div class="data" data-tag="nic-name">"Ash"</div><div class="text">)</div><div class="padding"> </div><div class="data" data-tag="last-name">Meter &amp; Smith </div><div class="data" data-tag="department"> 1440</div><div class="data" data-tag="percent-time"> 40</div></div><div class="line"><div class="data" data-tag="first-name">0123456789</div><div class="text"> (</div><div class="data" data-tag="nic-name">"0123456789"</div><div class="text">)</div><div class="data" data-tag="last-name">01234567890123</div><div class="data" data-tag="department"> 1440</div><div class="data" data-tag="percent-time"> 40</div></div><div class="line"><div class="data" data-tag="first-name">ახლა</div><div class="text"> (</div><div class="data" data-tag="nic-name">"გაიარო"</div><div class="text">)</div><div class="padding"> </div><div class="data" data-tag="last-name">საერთაშორისო </div><div class="data" data-tag="department"> 123</div><div class="data" data-tag="percent-time"> 90</div></div> \ No newline at end of file
+<div class="line"><div class="text">Οὐχὶ ταὐτὰ παρίσταταί μοι </div><div class="data" data-tag="v1">γιγνώσκειν</div><div class="text">, </div><div class="data" data-tag="v2">ὦ ἄνδρες ᾿Αθηναῖοι</div></div><div class="line"><div class="text">გთხოვთ </div><div class="data" data-tag="v1">ახლავე გაიაროთ რეგისტრაცია</div><div class="text"> </div><div class="data" data-tag="v2">Unicode-ის მეათე საერთაშორისო</div></div><div class="line"><div class="title">Width</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="width">63</div></div><div class="line"><div class="text">[</div><div class="data" data-tag="sinhala">෴ණ්ණ෴</div><div class="text">]</div></div><div class="line"><div class="title">Width</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="width">7</div></div><div class="line"><div class="text">[</div><div class="data" data-tag="sinhala">෴</div><div class="text">]</div></div><div class="line"><div class="title">Width</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="width">3</div></div><div class="line"><div class="text">[</div><div class="data" data-tag="sinhala">෴ණ්ණ</div><div class="text">]</div></div><div class="line"><div class="text">[</div><div class="data" data-tag="not-sinhala">1234</div><div class="text">]</div></div><div class="line"><div class="text">[</div><div class="data" data-tag="tag">ර්‍ඝ</div><div class="text">]</div></div><div class="line"><div class="title">Width</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="width">5</div></div><div class="line"><div class="title">First Name </div><div class="title">Last Name </div><div class="title">Department </div><div class="title">Time (%)</div></div><div class="line"><div class="data" data-tag="first-name">Jim</div><div class="text"> (</div><div class="data" data-tag="nic-name">"რეგტ"</div><div class="text">)</div><div class="padding"> </div><div class="data" data-tag="last-name">გთხოვთ ახ </div><div class="data" data-tag="department"> 431</div><div class="data" data-tag="percent-time"> 90</div></div><div class="line"><div class="data" data-tag="first-name">Terry</div><div class="text"> (</div><div class="data" data-tag="nic-name">"&lt;one"</div><div class="text">)</div><div class="padding"> </div><div class="data" data-tag="last-name">Οὐχὶ ταὐτὰ παρ</div><div class="data" data-tag="department"> 660</div><div class="data" data-tag="percent-time"> 90</div></div><div class="line"><div class="data" data-tag="first-name">Leslie</div><div class="text"> (</div><div class="data" data-tag="nic-name">"Les"</div><div class="text">)</div><div class="padding"> </div><div class="data" data-tag="last-name">Patterson </div><div class="data" data-tag="department"> 341</div><div class="data" data-tag="percent-time"> 60</div></div><div class="line"><div class="data" data-tag="first-name">Ashley</div><div class="text"> (</div><div class="data" data-tag="nic-name">"Ash"</div><div class="text">)</div><div class="padding"> </div><div class="data" data-tag="last-name">Meter &amp; Smith </div><div class="data" data-tag="department"> 1440</div><div class="data" data-tag="percent-time"> 40</div></div><div class="line"><div class="data" data-tag="first-name">0123456789</div><div class="text"> (</div><div class="data" data-tag="nic-name">"0123456789"</div><div class="text">)</div><div class="data" data-tag="last-name">01234567890123</div><div class="data" data-tag="department"> 1440</div><div class="data" data-tag="percent-time"> 40</div></div><div class="line"><div class="data" data-tag="first-name">ახლა</div><div class="text"> (</div><div class="data" data-tag="nic-name">"გაიარო"</div><div class="text">)</div><div class="padding"> </div><div class="data" data-tag="last-name">საერთაშორისო </div><div class="data" data-tag="department"> 123</div><div class="data" data-tag="percent-time"> 90</div></div><div class="line"><div class="data" data-tag="first-name">෴ණ්ණ෴෴ණ්ණ෴</div><div class="text"> (</div><div class="data" data-tag="nic-name">"Mick"</div><div class="text">)</div><div class="padding"> </div><div class="data" data-tag="last-name">෴ණ්ණ෴෴ණ්ණ෴෴ණ්ණ</div><div class="data" data-tag="department"> 110</div><div class="data" data-tag="percent-time"> 20</div></div> \ No newline at end of file
diff --git a/contrib/libxo/tests/core/saved/test_05.HIPx.out b/contrib/libxo/tests/core/saved/test_05.HIPx.out
index 2054de13b7f4..105f8482785e 100644
--- a/contrib/libxo/tests/core/saved/test_05.HIPx.out
+++ b/contrib/libxo/tests/core/saved/test_05.HIPx.out
@@ -11,6 +11,55 @@
<div class="data" data-tag="v2" data-xpath="/employees/v2">Unicode-ის მეათე საერთაშორისო</div>
</div>
<div class="line">
+ <div class="title">Width</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="width" data-xpath="/employees/width">63</div>
+</div>
+<div class="line">
+ <div class="text">[</div>
+ <div class="data" data-tag="sinhala" data-xpath="/employees/sinhala">෴ණ්ණ෴</div>
+ <div class="text">]</div>
+</div>
+<div class="line">
+ <div class="title">Width</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="width" data-xpath="/employees/width">7</div>
+</div>
+<div class="line">
+ <div class="text">[</div>
+ <div class="data" data-tag="sinhala" data-xpath="/employees/sinhala">෴</div>
+ <div class="text">]</div>
+</div>
+<div class="line">
+ <div class="title">Width</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="width" data-xpath="/employees/width">3</div>
+</div>
+<div class="line">
+ <div class="text">[</div>
+ <div class="data" data-tag="sinhala" data-xpath="/employees/sinhala">෴ණ්ණ</div>
+ <div class="text">]</div>
+</div>
+<div class="line">
+ <div class="text">[</div>
+ <div class="data" data-tag="not-sinhala" data-xpath="/employees/not-sinhala">1234</div>
+ <div class="text">]</div>
+</div>
+<div class="line">
+ <div class="text">[</div>
+ <div class="data" data-tag="tag" data-xpath="/employees/tag">ර්‍ඝ</div>
+ <div class="text">]</div>
+</div>
+<div class="line">
+ <div class="title">Width</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="width" data-xpath="/employees/width">5</div>
+</div>
+<div class="line">
<div class="title">First Name </div>
<div class="title">Last Name </div>
<div class="title">Department </div>
@@ -75,3 +124,13 @@
<div class="data" data-tag="department" data-xpath="/employees/employee/department"> 123</div>
<div class="data" data-tag="percent-time" data-xpath="/employees/employee/percent-time" data-type="number" data-help="Percentage of full &amp; part time (%)"> 90</div>
</div>
+<div class="line">
+ <div class="data" data-tag="first-name" data-xpath="/employees/employee/first-name" data-type="string" data-help="First name of employee">෴ණ්ණ෴෴ණ්ණ෴</div>
+ <div class="text"> (</div>
+ <div class="data" data-tag="nic-name" data-xpath="/employees/employee/nic-name">"Mick"</div>
+ <div class="text">)</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="last-name" data-xpath="/employees/employee/last-name" data-type="string" data-help="Last name of employee">෴ණ්ණ෴෴ණ්ණ෴෴ණ්ණ</div>
+ <div class="data" data-tag="department" data-xpath="/employees/employee/department"> 110</div>
+ <div class="data" data-tag="percent-time" data-xpath="/employees/employee/percent-time" data-type="number" data-help="Percentage of full &amp; part time (%)"> 20</div>
+</div>
diff --git a/contrib/libxo/tests/core/saved/test_05.HP.out b/contrib/libxo/tests/core/saved/test_05.HP.out
index 1c34b950ba2f..e66cf2b59642 100644
--- a/contrib/libxo/tests/core/saved/test_05.HP.out
+++ b/contrib/libxo/tests/core/saved/test_05.HP.out
@@ -11,6 +11,55 @@
<div class="data" data-tag="v2">Unicode-ის მეათე საერთაშორისო</div>
</div>
<div class="line">
+ <div class="title">Width</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="width">63</div>
+</div>
+<div class="line">
+ <div class="text">[</div>
+ <div class="data" data-tag="sinhala">෴ණ්ණ෴</div>
+ <div class="text">]</div>
+</div>
+<div class="line">
+ <div class="title">Width</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="width">7</div>
+</div>
+<div class="line">
+ <div class="text">[</div>
+ <div class="data" data-tag="sinhala">෴</div>
+ <div class="text">]</div>
+</div>
+<div class="line">
+ <div class="title">Width</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="width">3</div>
+</div>
+<div class="line">
+ <div class="text">[</div>
+ <div class="data" data-tag="sinhala">෴ණ්ණ</div>
+ <div class="text">]</div>
+</div>
+<div class="line">
+ <div class="text">[</div>
+ <div class="data" data-tag="not-sinhala">1234</div>
+ <div class="text">]</div>
+</div>
+<div class="line">
+ <div class="text">[</div>
+ <div class="data" data-tag="tag">ර්‍ඝ</div>
+ <div class="text">]</div>
+</div>
+<div class="line">
+ <div class="title">Width</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="width">5</div>
+</div>
+<div class="line">
<div class="title">First Name </div>
<div class="title">Last Name </div>
<div class="title">Department </div>
@@ -75,3 +124,13 @@
<div class="data" data-tag="department"> 123</div>
<div class="data" data-tag="percent-time"> 90</div>
</div>
+<div class="line">
+ <div class="data" data-tag="first-name">෴ණ්ණ෴෴ණ්ණ෴</div>
+ <div class="text"> (</div>
+ <div class="data" data-tag="nic-name">"Mick"</div>
+ <div class="text">)</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="last-name">෴ණ්ණ෴෴ණ්ණ෴෴ණ්ණ</div>
+ <div class="data" data-tag="department"> 110</div>
+ <div class="data" data-tag="percent-time"> 20</div>
+</div>
diff --git a/contrib/libxo/tests/core/saved/test_05.J.out b/contrib/libxo/tests/core/saved/test_05.J.out
index 515548954ac9..25d13ea03037 100644
--- a/contrib/libxo/tests/core/saved/test_05.J.out
+++ b/contrib/libxo/tests/core/saved/test_05.J.out
@@ -1,2 +1,2 @@
-{"employees": {"v1":"γιγνώσκειν","v2":"ὦ ἄνδρες ᾿Αθηναῖοι","v1":"ახლავე გაიაროთ რეგისტრაცია","v2":"Unicode-ის მეათე საერთაშორისო", "employee": [{"first-name":"Jim","nic-name":"\"რეგტ\"","last-name":"გთხოვთ ახ","department":431,"percent-time":90,"benefits":"full"}, {"first-name":"Terry","nic-name":"\"<one\"","last-name":"Οὐχὶ ταὐτὰ παρίσταταί μοι Jones","department":660,"percent-time":90,"benefits":"full"}, {"first-name":"Leslie","nic-name":"\"Les\"","last-name":"Patterson","department":341,"percent-time":60,"benefits":"full"}, {"first-name":"Ashley","nic-name":"\"Ash\"","last-name":"Meter & Smith","department":1440,"percent-time":40}, {"first-name":"0123456789","nic-name":"\"0123456789\"","last-name":"012345678901234567890","department":1440,"percent-time":40}, {"first-name":"ახლა","nic-name":"\"გაიარო\"","last-name":"საერთაშორისო","department":123,"percent-time":90,"benefits":"full"}]}
+{"employees": {"v1":"γιγνώσκειν","v2":"ὦ ἄνδρες ᾿Αθηναῖοι","v1":"ახლავე გაიაროთ რეგისტრაცია","v2":"Unicode-ის მეათე საერთაშორისო","width":55,"sinhala":"෴ණ්ණ෴","width":5,"sinhala":"෴","width":1,"sinhala":"෴ණ්ණ෴෴ණ්ණ෴","not-sinhala":"123456","tag":"ර්‍ඝ","width":3, "employee": [{"first-name":"Jim","nic-name":"\"რეგტ\"","last-name":"გთხოვთ ახ","department":431,"percent-time":90,"benefits":"full"}, {"first-name":"Terry","nic-name":"\"<one\"","last-name":"Οὐχὶ ταὐτὰ παρίσταταί μοι Jones","department":660,"percent-time":90,"benefits":"full"}, {"first-name":"Leslie","nic-name":"\"Les\"","last-name":"Patterson","department":341,"percent-time":60,"benefits":"full"}, {"first-name":"Ashley","nic-name":"\"Ash\"","last-name":"Meter & Smith","department":1440,"percent-time":40}, {"first-name":"0123456789","nic-name":"\"0123456789\"","last-name":"012345678901234567890","department":1440,"percent-time":40}, {"first-name":"ახლა","nic-name":"\"გაიარო\"","last-name":"საერთაშორისო","department":123,"percent-time":90,"benefits":"full"}, {"first-name":"෴ණ්ණ෴෴ණ්ණ෴","nic-name":"\"Mick\"","last-name":"෴ණ්ණ෴෴ණ්ණ෴෴ණ්ණ෴෴෴","department":110,"percent-time":20}]}
}
diff --git a/contrib/libxo/tests/core/saved/test_05.JP.out b/contrib/libxo/tests/core/saved/test_05.JP.out
index 7d77d70cae7b..c3219172d6f3 100644
--- a/contrib/libxo/tests/core/saved/test_05.JP.out
+++ b/contrib/libxo/tests/core/saved/test_05.JP.out
@@ -4,6 +4,15 @@
"v2": "ὦ ἄνδρες ᾿Αθηναῖοι",
"v1": "ახლავე გაიაროთ რეგისტრაცია",
"v2": "Unicode-ის მეათე საერთაშორისო",
+ "width": 55,
+ "sinhala": "෴ණ්ණ෴",
+ "width": 5,
+ "sinhala": "෴",
+ "width": 1,
+ "sinhala": "෴ණ්ණ෴෴ණ්ණ෴",
+ "not-sinhala": "123456",
+ "tag": "ර්‍ඝ",
+ "width": 3,
"employee": [
{
"first-name": "Jim",
@@ -50,6 +59,13 @@
"department": 123,
"percent-time": 90,
"benefits": "full"
+ },
+ {
+ "first-name": "෴ණ්ණ෴෴ණ්ණ෴",
+ "nic-name": "\"Mick\"",
+ "last-name": "෴ණ්ණ෴෴ණ්ණ෴෴ණ්ණ෴෴෴",
+ "department": 110,
+ "percent-time": 20
}
]
}
diff --git a/contrib/libxo/tests/core/saved/test_05.T.out b/contrib/libxo/tests/core/saved/test_05.T.out
index c709f6cbb216..db713a6b0c06 100644
--- a/contrib/libxo/tests/core/saved/test_05.T.out
+++ b/contrib/libxo/tests/core/saved/test_05.T.out
@@ -1,5 +1,14 @@
Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι
გთხოვთ ახლავე გაიაროთ რეგისტრაცია Unicode-ის მეათე საერთაშორისო
+Width: 63
+[෴ණ්ණ෴]
+Width: 7
+[෴]
+Width: 3
+[෴ණ්ණ]
+[1234]
+[ර්‍ඝ]
+Width: 5
First Name Last Name Department Time (%)
Jim ("რეგტ") გთხოვთ ახ 431 90
Terry ("<one") Οὐχὶ ταὐτὰ παρ 660 90
@@ -7,3 +16,4 @@ Leslie ("Les") Patterson 341 60
Ashley ("Ash") Meter & Smith 1440 40
0123456789 ("0123456789")01234567890123 1440 40
ახლა ("გაიარო") საერთაშორისო 123 90
+෴ණ්ණ෴෴ණ්ණ෴ ("Mick") ෴ණ්ණ෴෴ණ්ණ෴෴ණ්ණ 110 20
diff --git a/contrib/libxo/tests/core/saved/test_05.X.out b/contrib/libxo/tests/core/saved/test_05.X.out
index 85ecbbcf62af..7cd29260de26 100644
--- a/contrib/libxo/tests/core/saved/test_05.X.out
+++ b/contrib/libxo/tests/core/saved/test_05.X.out
@@ -1 +1 @@
-<employees><v1>γιγνώσκειν</v1><v2>ὦ ἄνδρες ᾿Αθηναῖοι</v2><v1>ახლავე გაიაროთ რეგისტრაცია</v1><v2>Unicode-ის მეათე საერთაშორისო</v2><employee><first-name>Jim</first-name><nic-name>"რეგტ"</nic-name><last-name>გთხოვთ ახ</last-name><department>431</department><percent-time>90</percent-time><benefits full-time="honest &amp; for true">full</benefits></employee><employee><first-name>Terry</first-name><nic-name>"&lt;one"</nic-name><last-name>Οὐχὶ ταὐτὰ παρίσταταί μοι Jones</last-name><department>660</department><percent-time>90</percent-time><benefits full-time="honest &amp; for true">full</benefits></employee><employee><first-name>Leslie</first-name><nic-name>"Les"</nic-name><last-name>Patterson</last-name><department>341</department><percent-time>60</percent-time><benefits full-time="honest &amp; for true">full</benefits></employee><employee><first-name>Ashley</first-name><nic-name>"Ash"</nic-name><last-name>Meter &amp; Smith</last-name><department>1440</department><percent-time>40</percent-time></employee><employee><first-name>0123456789</first-name><nic-name>"0123456789"</nic-name><last-name>012345678901234567890</last-name><department>1440</department><percent-time>40</percent-time></employee><employee><first-name>ახლა</first-name><nic-name>"გაიარო"</nic-name><last-name>საერთაშორისო</last-name><department>123</department><percent-time>90</percent-time><benefits full-time="honest &amp; for true">full</benefits></employee></employees> \ No newline at end of file
+<employees><v1>γιγνώσκειν</v1><v2>ὦ ἄνδρες ᾿Αθηναῖοι</v2><v1>ახლავე გაიაროთ რეგისტრაცია</v1><v2>Unicode-ის მეათე საერთაშორისო</v2><width>55</width><sinhala>෴ණ්ණ෴</sinhala><width>5</width><sinhala>෴</sinhala><width>1</width><sinhala>෴ණ්ණ෴෴ණ්ණ෴</sinhala><not-sinhala>123456</not-sinhala><tag>ර්‍ඝ</tag><width>3</width><employee><first-name>Jim</first-name><nic-name>"რეგტ"</nic-name><last-name>გთხოვთ ახ</last-name><department>431</department><percent-time>90</percent-time><benefits full-time="honest &amp; for true">full</benefits></employee><employee><first-name>Terry</first-name><nic-name>"&lt;one"</nic-name><last-name>Οὐχὶ ταὐτὰ παρίσταταί μοι Jones</last-name><department>660</department><percent-time>90</percent-time><benefits full-time="honest &amp; for true">full</benefits></employee><employee><first-name>Leslie</first-name><nic-name>"Les"</nic-name><last-name>Patterson</last-name><department>341</department><percent-time>60</percent-time><benefits full-time="honest &amp; for true">full</benefits></employee><employee><first-name>Ashley</first-name><nic-name>"Ash"</nic-name><last-name>Meter &amp; Smith</last-name><department>1440</department><percent-time>40</percent-time></employee><employee><first-name>0123456789</first-name><nic-name>"0123456789"</nic-name><last-name>012345678901234567890</last-name><department>1440</department><percent-time>40</percent-time></employee><employee><first-name>ახლა</first-name><nic-name>"გაიარო"</nic-name><last-name>საერთაშორისო</last-name><department>123</department><percent-time>90</percent-time><benefits full-time="honest &amp; for true">full</benefits></employee><employee><first-name>෴ණ්ණ෴෴ණ්ණ෴</first-name><nic-name>"Mick"</nic-name><last-name>෴ණ්ණ෴෴ණ්ණ෴෴ණ්ණ෴෴෴</last-name><department>110</department><percent-time>20</percent-time></employee></employees> \ No newline at end of file
diff --git a/contrib/libxo/tests/core/saved/test_05.XP.out b/contrib/libxo/tests/core/saved/test_05.XP.out
index 55507eb42a48..6ef573f3a8ba 100644
--- a/contrib/libxo/tests/core/saved/test_05.XP.out
+++ b/contrib/libxo/tests/core/saved/test_05.XP.out
@@ -3,6 +3,15 @@
<v2>ὦ ἄνδρες ᾿Αθηναῖοι</v2>
<v1>ახლავე გაიაროთ რეგისტრაცია</v1>
<v2>Unicode-ის მეათე საერთაშორისო</v2>
+ <width>55</width>
+ <sinhala>෴ණ්ණ෴</sinhala>
+ <width>5</width>
+ <sinhala>෴</sinhala>
+ <width>1</width>
+ <sinhala>෴ණ්ණ෴෴ණ්ණ෴</sinhala>
+ <not-sinhala>123456</not-sinhala>
+ <tag>ර්‍ඝ</tag>
+ <width>3</width>
<employee>
<first-name>Jim</first-name>
<nic-name>"რეგტ"</nic-name>
@@ -49,4 +58,11 @@
<percent-time>90</percent-time>
<benefits full-time="honest &amp; for true">full</benefits>
</employee>
+ <employee>
+ <first-name>෴ණ්ණ෴෴ණ්ණ෴</first-name>
+ <nic-name>"Mick"</nic-name>
+ <last-name>෴ණ්ණ෴෴ණ්ණ෴෴ණ්ණ෴෴෴</last-name>
+ <department>110</department>
+ <percent-time>20</percent-time>
+ </employee>
</employees>
diff --git a/contrib/libxo/tests/core/saved/test_09.JP.out b/contrib/libxo/tests/core/saved/test_09.JP.out
index 8340b275606b..48e20c146673 100644
--- a/contrib/libxo/tests/core/saved/test_09.JP.out
+++ b/contrib/libxo/tests/core/saved/test_09.JP.out
@@ -3,22 +3,34 @@
"data": {
"contents": {
"name": [
- "gum", "rope", "ladder", "bolt", "water"
+ "gum",
+ "rope",
+ "ladder",
+ "bolt",
+ "water"
]
},
"contents": {
"item": [
- "gum", "rope", "ladder", "bolt", "water"
+ "gum",
+ "rope",
+ "ladder",
+ "bolt",
+ "water"
]
},
"contents": {
"item": [
- "gum", "rope", "ladder", "bolt", "water"
+ "gum",
+ "rope",
+ "ladder",
+ "bolt",
+ "water"
],
"total": "six",
"one": "one",
"two": [
- "two"
+ "two"
],
"three": "three"
}
diff --git a/contrib/libxo/tests/core/saved/test_10.H.err b/contrib/libxo/tests/core/saved/test_10.H.err
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/contrib/libxo/tests/core/saved/test_10.H.err
diff --git a/contrib/libxo/tests/core/saved/test_10.H.out b/contrib/libxo/tests/core/saved/test_10.H.out
new file mode 100644
index 000000000000..d4ec07da82e6
--- /dev/null
+++ b/contrib/libxo/tests/core/saved/test_10.H.out
@@ -0,0 +1 @@
+<div class="line"><div class="title color-fg-blue">blue</div><div class="title color-fg-green color-bg-blue">green</div><div class="title color-fg-red color-bg-green">red</div><div class="title color-fg-yellow color-bg-red">yellow</div><div class="title color-bg-yellow">default</div></div><div class="line"><div class="data effect-bold" data-tag="data">bold</div><div class="text effect-bold"> </div><div class="data effect-bold effect-underline" data-tag="data">bold-ul</div><div class="text effect-bold effect-underline"> </div><div class="data effect-bold effect-underline effect-inverse color-fg-inverse color-bg-inverse" data-tag="data">triple</div><div class="text effect-bold effect-underline effect-inverse color-fg-inverse color-bg-inverse"> </div><div class="data effect-underline effect-inverse color-fg-inverse color-bg-inverse" data-tag="data">inv-ul</div><div class="text effect-underline effect-inverse color-fg-inverse color-bg-inverse"> </div><div class="data effect-underline" data-tag="data">underline</div><div class="text effect-underline"> </div><div class="data" data-tag="data">plain</div></div><div class="line"><div class="title">Item </div><div class="title effect-bold effect-underline"> Total Sold</div><div class="title effect-underline"> In Stock</div><div class="title effect-underline effect-inverse color-fg-inverse color-bg-inverse"> On Order</div><div class="title"> SKU</div></div><div class="line"><div class="data" data-tag="name" data-key="key">gum </div><div class="data" data-tag="sold"> 1412</div><div class="data" data-tag="in-stock"> 54</div><div class="data color-fg-yellow" data-tag="on-order"> 10</div><div class="data" data-tag="sku" data-key="key"> GRO-000-415</div></div><div class="line"><div class="data" data-tag="name" data-key="key">rope </div><div class="data" data-tag="sold"> 85</div><div class="data effect-inverse color-fg-inverse color-bg-inverse" data-tag="in-stock"> 4</div><div class="data" data-tag="on-order"> 2</div><div class="data" data-tag="sku" data-key="key"> HRD-000-212</div></div><div class="line"><div class="data" data-tag="name" data-key="key">ladder </div><div class="data" data-tag="sold"> 0</div><div class="data effect-inverse color-fg-inverse color-bg-inverse" data-tag="in-stock"> 2</div><div class="data" data-tag="on-order"> 1</div><div class="data" data-tag="sku" data-key="key"> HRD-000-517</div></div><div class="line"><div class="data" data-tag="name" data-key="key">bolt </div><div class="data" data-tag="sold"> 4123</div><div class="data" data-tag="in-stock"> 144</div><div class="data color-fg-yellow" data-tag="on-order"> 42</div><div class="data" data-tag="sku" data-key="key"> HRD-000-632</div></div><div class="line"><div class="data" data-tag="name" data-key="key">water </div><div class="data" data-tag="sold"> 17</div><div class="data" data-tag="in-stock"> 14</div><div class="data" data-tag="on-order"> 2</div><div class="data" data-tag="sku" data-key="key"> GRO-000-2331</div></div><div class="line"></div><div class="line"></div><div class="line"><div class="label">Item</div><div class="text"> '</div><div class="data" data-tag="name" data-key="key">gum</div><div class="text">':</div></div><div class="line"><div class="padding"> </div><div class="label">Total sold</div><div class="text">: </div><div class="data" data-tag="sold">1412.0</div></div><div class="line"><div class="padding"> </div><div class="label">In stock</div><div class="decoration">:</div><div class="padding"> </div><div class="data effect-inverse color-fg-inverse color-bg-inverse" data-tag="in-stock">54</div></div><div class="line"><div class="padding"> </div><div class="label">On order</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="on-order">10</div></div><div class="line"><div class="padding"> </div><div class="label">SKU</div><div class="text">: </div><div class="data" data-tag="sku" data-key="key">GRO-000-415</div></div><div class="line"><div class="label">Item</div><div class="text"> '</div><div class="data" data-tag="name" data-key="key">rope</div><div class="text">':</div></div><div class="line"><div class="padding"> </div><div class="label">Total sold</div><div class="text">: </div><div class="data" data-tag="sold">85.0</div></div><div class="line"><div class="padding"> </div><div class="label">In stock</div><div class="decoration">:</div><div class="padding"> </div><div class="data effect-inverse color-fg-inverse color-bg-inverse" data-tag="in-stock">4</div></div><div class="line"><div class="padding"> </div><div class="label">On order</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="on-order">2</div></div><div class="line"><div class="padding"> </div><div class="label">SKU</div><div class="text">: </div><div class="data" data-tag="sku" data-key="key">HRD-000-212</div></div><div class="line"><div class="label">Item</div><div class="text"> '</div><div class="data" data-tag="name" data-key="key">ladder</div><div class="text">':</div></div><div class="line"><div class="padding"> </div><div class="label">Total sold</div><div class="text">: </div><div class="data" data-tag="sold">0</div></div><div class="line"><div class="padding"> </div><div class="label">In stock</div><div class="decoration">:</div><div class="padding"> </div><div class="data effect-inverse color-fg-inverse color-bg-inverse" data-tag="in-stock">2</div></div><div class="line"><div class="padding"> </div><div class="label">On order</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="on-order">1</div></div><div class="line"><div class="padding"> </div><div class="label">SKU</div><div class="text">: </div><div class="data" data-tag="sku" data-key="key">HRD-000-517</div></div><div class="line"><div class="label">Item</div><div class="text"> '</div><div class="data" data-tag="name" data-key="key">bolt</div><div class="text">':</div></div><div class="line"><div class="padding"> </div><div class="label">Total sold</div><div class="text">: </div><div class="data" data-tag="sold">4123.0</div></div><div class="line"><div class="padding"> </div><div class="label">In stock</div><div class="decoration">:</div><div class="padding"> </div><div class="data effect-inverse color-fg-inverse color-bg-inverse" data-tag="in-stock">144</div></div><div class="line"><div class="padding"> </div><div class="label">On order</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="on-order">42</div></div><div class="line"><div class="padding"> </div><div class="label">SKU</div><div class="text">: </div><div class="data" data-tag="sku" data-key="key">HRD-000-632</div></div><div class="line"><div class="label">Item</div><div class="text"> '</div><div class="data" data-tag="name" data-key="key">water</div><div class="text">':</div></div><div class="line"><div class="padding"> </div><div class="label">Total sold</div><div class="text">: </div><div class="data" data-tag="sold">17.0</div></div><div class="line"><div class="padding"> </div><div class="label">In stock</div><div class="decoration">:</div><div class="padding"> </div><div class="data effect-inverse color-fg-inverse color-bg-inverse" data-tag="in-stock">14</div></div><div class="line"><div class="padding"> </div><div class="label">On order</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="on-order">2</div></div><div class="line"><div class="padding"> </div><div class="label">SKU</div><div class="text">: </div><div class="data" data-tag="sku" data-key="key">GRO-000-2331</div></div><div class="line"><div class="label">Item</div><div class="text"> '</div><div class="data" data-tag="name" data-key="key">fish</div><div class="text">':</div></div><div class="line"><div class="padding"> </div><div class="label effect-bold color-fg-white color-bg-blue">Total sold</div><div class="text effect-bold color-fg-white color-bg-blue">: </div><div class="data effect-bold color-fg-white color-bg-blue" data-tag="sold">1321.0</div></div><div class="line"><div class="padding"> </div><div class="label">In stock</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="in-stock">45</div></div><div class="line"><div class="padding"> </div><div class="label">On order</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="on-order">1</div></div><div class="line"><div class="padding"> </div><div class="label">SKU</div><div class="text">: </div><div class="data" data-tag="sku" data-key="key">GRO-000-533</div></div><div class="line"><div class="label">Item</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="item">gum</div></div><div class="line"><div class="label">Item</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="item">rope</div></div><div class="line"><div class="label">Item</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="item">ladder</div></div><div class="line"><div class="label">Item</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="item">bolt</div></div><div class="line"><div class="label">Item</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="item">water</div></div><div class="line"><div class="text">X</div><div class="text">X</div><div class="text">X</div><div class="text">X</div><div class="text">X</div><div class="text">X</div><div class="text">X</div><div class="text">X</div></div><div class="line"><div class="text">X</div><div class="padding"> </div><div class="text">X</div><div class="label">Cost</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="cost">425</div></div><div class="line"><div class="text">X</div><div class="padding"> </div><div class="text">X</div><div class="label">Cost</div><div class="decoration">:</div><div class="padding"> </div><div class="data" data-tag="cost">455</div></div> \ No newline at end of file
diff --git a/contrib/libxo/tests/core/saved/test_10.HIPx.err b/contrib/libxo/tests/core/saved/test_10.HIPx.err
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/contrib/libxo/tests/core/saved/test_10.HIPx.err
diff --git a/contrib/libxo/tests/core/saved/test_10.HIPx.out b/contrib/libxo/tests/core/saved/test_10.HIPx.out
new file mode 100644
index 000000000000..ef64173f54a5
--- /dev/null
+++ b/contrib/libxo/tests/core/saved/test_10.HIPx.out
@@ -0,0 +1,316 @@
+<div class="line">
+ <div class="title color-fg-blue">blue</div>
+ <div class="title color-fg-green color-bg-blue">green</div>
+ <div class="title color-fg-red color-bg-green">red</div>
+ <div class="title color-fg-yellow color-bg-red">yellow</div>
+ <div class="title color-bg-yellow">default</div>
+</div>
+<div class="line">
+ <div class="data effect-bold" data-tag="data" data-xpath="/top/data/data">bold</div>
+ <div class="text effect-bold"> </div>
+ <div class="data effect-bold effect-underline" data-tag="data" data-xpath="/top/data/data">bold-ul</div>
+ <div class="text effect-bold effect-underline"> </div>
+ <div class="data effect-bold effect-underline effect-inverse color-fg-inverse color-bg-inverse" data-tag="data" data-xpath="/top/data/data">triple</div>
+ <div class="text effect-bold effect-underline effect-inverse color-fg-inverse color-bg-inverse"> </div>
+ <div class="data effect-underline effect-inverse color-fg-inverse color-bg-inverse" data-tag="data" data-xpath="/top/data/data">inv-ul</div>
+ <div class="text effect-underline effect-inverse color-fg-inverse color-bg-inverse"> </div>
+ <div class="data effect-underline" data-tag="data" data-xpath="/top/data/data">underline</div>
+ <div class="text effect-underline"> </div>
+ <div class="data" data-tag="data" data-xpath="/top/data/data">plain</div>
+</div>
+<div class="line">
+ <div class="title">Item </div>
+ <div class="title effect-bold effect-underline"> Total Sold</div>
+ <div class="title effect-underline"> In Stock</div>
+ <div class="title effect-underline effect-inverse color-fg-inverse color-bg-inverse"> On Order</div>
+ <div class="title"> SKU</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="name" data-xpath="/top/data/item/name" data-type="string" data-help="Name of the item" data-key="key">gum </div>
+ <div class="data" data-tag="sold" data-xpath="/top/data/item[sku = 'GRO-000-415'][name = 'gum']/sold" data-type="number" data-help="Number of items sold"> 1412</div>
+ <div class="data" data-tag="in-stock" data-xpath="/top/data/item[sku = 'GRO-000-415'][name = 'gum']/in-stock" data-type="number" data-help="Number of items in stock"> 54</div>
+ <div class="data color-fg-yellow" data-tag="on-order" data-xpath="/top/data/item[sku = 'GRO-000-415'][name = 'gum']/on-order" data-type="number" data-help="Number of items on order"> 10</div>
+ <div class="data" data-tag="sku" data-xpath="/top/data/item/sku" data-type="string" data-help="Stock Keeping Unit" data-key="key"> GRO-000-415</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="name" data-xpath="/top/data/item/name" data-type="string" data-help="Name of the item" data-key="key">rope </div>
+ <div class="data" data-tag="sold" data-xpath="/top/data/item[sku = 'HRD-000-212'][name = 'rope']/sold" data-type="number" data-help="Number of items sold"> 85</div>
+ <div class="data effect-inverse color-fg-inverse color-bg-inverse" data-tag="in-stock" data-xpath="/top/data/item[sku = 'HRD-000-212'][name = 'rope']/in-stock" data-type="number" data-help="Number of items in stock"> 4</div>
+ <div class="data" data-tag="on-order" data-xpath="/top/data/item[sku = 'HRD-000-212'][name = 'rope']/on-order" data-type="number" data-help="Number of items on order"> 2</div>
+ <div class="data" data-tag="sku" data-xpath="/top/data/item/sku" data-type="string" data-help="Stock Keeping Unit" data-key="key"> HRD-000-212</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="name" data-xpath="/top/data/item/name" data-type="string" data-help="Name of the item" data-key="key">ladder </div>
+ <div class="data" data-tag="sold" data-xpath="/top/data/item[sku = 'HRD-000-517'][name = 'ladder']/sold" data-type="number" data-help="Number of items sold"> 0</div>
+ <div class="data effect-inverse color-fg-inverse color-bg-inverse" data-tag="in-stock" data-xpath="/top/data/item[sku = 'HRD-000-517'][name = 'ladder']/in-stock" data-type="number" data-help="Number of items in stock"> 2</div>
+ <div class="data" data-tag="on-order" data-xpath="/top/data/item[sku = 'HRD-000-517'][name = 'ladder']/on-order" data-type="number" data-help="Number of items on order"> 1</div>
+ <div class="data" data-tag="sku" data-xpath="/top/data/item/sku" data-type="string" data-help="Stock Keeping Unit" data-key="key"> HRD-000-517</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="name" data-xpath="/top/data/item/name" data-type="string" data-help="Name of the item" data-key="key">bolt </div>
+ <div class="data" data-tag="sold" data-xpath="/top/data/item[sku = 'HRD-000-632'][name = 'bolt']/sold" data-type="number" data-help="Number of items sold"> 4123</div>
+ <div class="data" data-tag="in-stock" data-xpath="/top/data/item[sku = 'HRD-000-632'][name = 'bolt']/in-stock" data-type="number" data-help="Number of items in stock"> 144</div>
+ <div class="data color-fg-yellow" data-tag="on-order" data-xpath="/top/data/item[sku = 'HRD-000-632'][name = 'bolt']/on-order" data-type="number" data-help="Number of items on order"> 42</div>
+ <div class="data" data-tag="sku" data-xpath="/top/data/item/sku" data-type="string" data-help="Stock Keeping Unit" data-key="key"> HRD-000-632</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="name" data-xpath="/top/data/item/name" data-type="string" data-help="Name of the item" data-key="key">water </div>
+ <div class="data" data-tag="sold" data-xpath="/top/data/item[sku = 'GRO-000-2331'][name = 'water']/sold" data-type="number" data-help="Number of items sold"> 17</div>
+ <div class="data" data-tag="in-stock" data-xpath="/top/data/item[sku = 'GRO-000-2331'][name = 'water']/in-stock" data-type="number" data-help="Number of items in stock"> 14</div>
+ <div class="data" data-tag="on-order" data-xpath="/top/data/item[sku = 'GRO-000-2331'][name = 'water']/on-order" data-type="number" data-help="Number of items on order"> 2</div>
+ <div class="data" data-tag="sku" data-xpath="/top/data/item/sku" data-type="string" data-help="Stock Keeping Unit" data-key="key"> GRO-000-2331</div>
+</div>
+<div class="line">
+</div>
+<div class="line">
+</div>
+<div class="line">
+ <div class="label">Item</div>
+ <div class="text"> '</div>
+ <div class="data" data-tag="name" data-xpath="/top/data/item/name" data-type="string" data-help="Name of the item" data-key="key">gum</div>
+ <div class="text">':</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">Total sold</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="sold" data-xpath="/top/data/item[sku = 'GRO-000-415'][name = 'gum']/sold" data-type="number" data-help="Number of items sold">1412.0</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">In stock</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data effect-inverse color-fg-inverse color-bg-inverse" data-tag="in-stock" data-xpath="/top/data/item[sku = 'GRO-000-415'][name = 'gum']/in-stock" data-type="number" data-help="Number of items in stock">54</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">On order</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="on-order" data-xpath="/top/data/item[sku = 'GRO-000-415'][name = 'gum']/on-order" data-type="number" data-help="Number of items on order">10</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">SKU</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="sku" data-xpath="/top/data/item/sku" data-type="string" data-help="Stock Keeping Unit" data-key="key">GRO-000-415</div>
+</div>
+<div class="line">
+ <div class="label">Item</div>
+ <div class="text"> '</div>
+ <div class="data" data-tag="name" data-xpath="/top/data/item/name" data-type="string" data-help="Name of the item" data-key="key">rope</div>
+ <div class="text">':</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">Total sold</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="sold" data-xpath="/top/data/item[sku = 'HRD-000-212'][name = 'rope']/sold" data-type="number" data-help="Number of items sold">85.0</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">In stock</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data effect-inverse color-fg-inverse color-bg-inverse" data-tag="in-stock" data-xpath="/top/data/item[sku = 'HRD-000-212'][name = 'rope']/in-stock" data-type="number" data-help="Number of items in stock">4</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">On order</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="on-order" data-xpath="/top/data/item[sku = 'HRD-000-212'][name = 'rope']/on-order" data-type="number" data-help="Number of items on order">2</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">SKU</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="sku" data-xpath="/top/data/item/sku" data-type="string" data-help="Stock Keeping Unit" data-key="key">HRD-000-212</div>
+</div>
+<div class="line">
+ <div class="label">Item</div>
+ <div class="text"> '</div>
+ <div class="data" data-tag="name" data-xpath="/top/data/item/name" data-type="string" data-help="Name of the item" data-key="key">ladder</div>
+ <div class="text">':</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">Total sold</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="sold" data-xpath="/top/data/item[sku = 'HRD-000-517'][name = 'ladder']/sold" data-type="number" data-help="Number of items sold">0</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">In stock</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data effect-inverse color-fg-inverse color-bg-inverse" data-tag="in-stock" data-xpath="/top/data/item[sku = 'HRD-000-517'][name = 'ladder']/in-stock" data-type="number" data-help="Number of items in stock">2</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">On order</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="on-order" data-xpath="/top/data/item[sku = 'HRD-000-517'][name = 'ladder']/on-order" data-type="number" data-help="Number of items on order">1</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">SKU</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="sku" data-xpath="/top/data/item/sku" data-type="string" data-help="Stock Keeping Unit" data-key="key">HRD-000-517</div>
+</div>
+<div class="line">
+ <div class="label">Item</div>
+ <div class="text"> '</div>
+ <div class="data" data-tag="name" data-xpath="/top/data/item/name" data-type="string" data-help="Name of the item" data-key="key">bolt</div>
+ <div class="text">':</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">Total sold</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="sold" data-xpath="/top/data/item[sku = 'HRD-000-632'][name = 'bolt']/sold" data-type="number" data-help="Number of items sold">4123.0</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">In stock</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data effect-inverse color-fg-inverse color-bg-inverse" data-tag="in-stock" data-xpath="/top/data/item[sku = 'HRD-000-632'][name = 'bolt']/in-stock" data-type="number" data-help="Number of items in stock">144</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">On order</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="on-order" data-xpath="/top/data/item[sku = 'HRD-000-632'][name = 'bolt']/on-order" data-type="number" data-help="Number of items on order">42</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">SKU</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="sku" data-xpath="/top/data/item/sku" data-type="string" data-help="Stock Keeping Unit" data-key="key">HRD-000-632</div>
+</div>
+<div class="line">
+ <div class="label">Item</div>
+ <div class="text"> '</div>
+ <div class="data" data-tag="name" data-xpath="/top/data/item/name" data-type="string" data-help="Name of the item" data-key="key">water</div>
+ <div class="text">':</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">Total sold</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="sold" data-xpath="/top/data/item[sku = 'GRO-000-2331'][name = 'water']/sold" data-type="number" data-help="Number of items sold">17.0</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">In stock</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data effect-inverse color-fg-inverse color-bg-inverse" data-tag="in-stock" data-xpath="/top/data/item[sku = 'GRO-000-2331'][name = 'water']/in-stock" data-type="number" data-help="Number of items in stock">14</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">On order</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="on-order" data-xpath="/top/data/item[sku = 'GRO-000-2331'][name = 'water']/on-order" data-type="number" data-help="Number of items on order">2</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">SKU</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="sku" data-xpath="/top/data/item/sku" data-type="string" data-help="Stock Keeping Unit" data-key="key">GRO-000-2331</div>
+</div>
+<div class="line">
+ <div class="label">Item</div>
+ <div class="text"> '</div>
+ <div class="data" data-tag="name" data-xpath="/top/data/item/name" data-type="string" data-help="Name of the item" data-key="key">fish</div>
+ <div class="text">':</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label effect-bold color-fg-white color-bg-blue">Total sold</div>
+ <div class="text effect-bold color-fg-white color-bg-blue">: </div>
+ <div class="data effect-bold color-fg-white color-bg-blue" data-tag="sold" data-xpath="/top/data/item[sku = 'GRO-000-533'][name = 'fish']/sold" data-type="number" data-help="Number of items sold">1321.0</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">In stock</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="in-stock" data-xpath="/top/data/item[sku = 'GRO-000-533'][name = 'fish']/in-stock" data-type="number" data-help="Number of items in stock">45</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">On order</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="on-order" data-xpath="/top/data/item[sku = 'GRO-000-533'][name = 'fish']/on-order" data-type="number" data-help="Number of items on order">1</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">SKU</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="sku" data-xpath="/top/data/item/sku" data-type="string" data-help="Stock Keeping Unit" data-key="key">GRO-000-533</div>
+</div>
+<div class="line">
+ <div class="label">Item</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="item" data-xpath="/top/data/item">gum</div>
+</div>
+<div class="line">
+ <div class="label">Item</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="item" data-xpath="/top/data/item">rope</div>
+</div>
+<div class="line">
+ <div class="label">Item</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="item" data-xpath="/top/data/item">ladder</div>
+</div>
+<div class="line">
+ <div class="label">Item</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="item" data-xpath="/top/data/item">bolt</div>
+</div>
+<div class="line">
+ <div class="label">Item</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="item" data-xpath="/top/data/item">water</div>
+</div>
+<div class="line">
+ <div class="text">X</div>
+ <div class="text">X</div>
+ <div class="text">X</div>
+ <div class="text">X</div>
+ <div class="text">X</div>
+ <div class="text">X</div>
+ <div class="text">X</div>
+ <div class="text">X</div>
+</div>
+<div class="line">
+ <div class="text">X</div>
+ <div class="padding"> </div>
+ <div class="text">X</div>
+ <div class="label">Cost</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="cost" data-xpath="/top/cost">425</div>
+</div>
+<div class="line">
+ <div class="text">X</div>
+ <div class="padding"> </div>
+ <div class="text">X</div>
+ <div class="label">Cost</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="cost" data-xpath="/top/cost">455</div>
+</div>
diff --git a/contrib/libxo/tests/core/saved/test_10.HP.err b/contrib/libxo/tests/core/saved/test_10.HP.err
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/contrib/libxo/tests/core/saved/test_10.HP.err
diff --git a/contrib/libxo/tests/core/saved/test_10.HP.out b/contrib/libxo/tests/core/saved/test_10.HP.out
new file mode 100644
index 000000000000..abb1b0183656
--- /dev/null
+++ b/contrib/libxo/tests/core/saved/test_10.HP.out
@@ -0,0 +1,316 @@
+<div class="line">
+ <div class="title color-fg-blue">blue</div>
+ <div class="title color-fg-green color-bg-blue">green</div>
+ <div class="title color-fg-red color-bg-green">red</div>
+ <div class="title color-fg-yellow color-bg-red">yellow</div>
+ <div class="title color-bg-yellow">default</div>
+</div>
+<div class="line">
+ <div class="data effect-bold" data-tag="data">bold</div>
+ <div class="text effect-bold"> </div>
+ <div class="data effect-bold effect-underline" data-tag="data">bold-ul</div>
+ <div class="text effect-bold effect-underline"> </div>
+ <div class="data effect-bold effect-underline effect-inverse color-fg-inverse color-bg-inverse" data-tag="data">triple</div>
+ <div class="text effect-bold effect-underline effect-inverse color-fg-inverse color-bg-inverse"> </div>
+ <div class="data effect-underline effect-inverse color-fg-inverse color-bg-inverse" data-tag="data">inv-ul</div>
+ <div class="text effect-underline effect-inverse color-fg-inverse color-bg-inverse"> </div>
+ <div class="data effect-underline" data-tag="data">underline</div>
+ <div class="text effect-underline"> </div>
+ <div class="data" data-tag="data">plain</div>
+</div>
+<div class="line">
+ <div class="title">Item </div>
+ <div class="title effect-bold effect-underline"> Total Sold</div>
+ <div class="title effect-underline"> In Stock</div>
+ <div class="title effect-underline effect-inverse color-fg-inverse color-bg-inverse"> On Order</div>
+ <div class="title"> SKU</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="name" data-key="key">gum </div>
+ <div class="data" data-tag="sold"> 1412</div>
+ <div class="data" data-tag="in-stock"> 54</div>
+ <div class="data color-fg-yellow" data-tag="on-order"> 10</div>
+ <div class="data" data-tag="sku" data-key="key"> GRO-000-415</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="name" data-key="key">rope </div>
+ <div class="data" data-tag="sold"> 85</div>
+ <div class="data effect-inverse color-fg-inverse color-bg-inverse" data-tag="in-stock"> 4</div>
+ <div class="data" data-tag="on-order"> 2</div>
+ <div class="data" data-tag="sku" data-key="key"> HRD-000-212</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="name" data-key="key">ladder </div>
+ <div class="data" data-tag="sold"> 0</div>
+ <div class="data effect-inverse color-fg-inverse color-bg-inverse" data-tag="in-stock"> 2</div>
+ <div class="data" data-tag="on-order"> 1</div>
+ <div class="data" data-tag="sku" data-key="key"> HRD-000-517</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="name" data-key="key">bolt </div>
+ <div class="data" data-tag="sold"> 4123</div>
+ <div class="data" data-tag="in-stock"> 144</div>
+ <div class="data color-fg-yellow" data-tag="on-order"> 42</div>
+ <div class="data" data-tag="sku" data-key="key"> HRD-000-632</div>
+</div>
+<div class="line">
+ <div class="data" data-tag="name" data-key="key">water </div>
+ <div class="data" data-tag="sold"> 17</div>
+ <div class="data" data-tag="in-stock"> 14</div>
+ <div class="data" data-tag="on-order"> 2</div>
+ <div class="data" data-tag="sku" data-key="key"> GRO-000-2331</div>
+</div>
+<div class="line">
+</div>
+<div class="line">
+</div>
+<div class="line">
+ <div class="label">Item</div>
+ <div class="text"> '</div>
+ <div class="data" data-tag="name" data-key="key">gum</div>
+ <div class="text">':</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">Total sold</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="sold">1412.0</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">In stock</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data effect-inverse color-fg-inverse color-bg-inverse" data-tag="in-stock">54</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">On order</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="on-order">10</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">SKU</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="sku" data-key="key">GRO-000-415</div>
+</div>
+<div class="line">
+ <div class="label">Item</div>
+ <div class="text"> '</div>
+ <div class="data" data-tag="name" data-key="key">rope</div>
+ <div class="text">':</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">Total sold</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="sold">85.0</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">In stock</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data effect-inverse color-fg-inverse color-bg-inverse" data-tag="in-stock">4</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">On order</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="on-order">2</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">SKU</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="sku" data-key="key">HRD-000-212</div>
+</div>
+<div class="line">
+ <div class="label">Item</div>
+ <div class="text"> '</div>
+ <div class="data" data-tag="name" data-key="key">ladder</div>
+ <div class="text">':</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">Total sold</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="sold">0</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">In stock</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data effect-inverse color-fg-inverse color-bg-inverse" data-tag="in-stock">2</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">On order</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="on-order">1</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">SKU</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="sku" data-key="key">HRD-000-517</div>
+</div>
+<div class="line">
+ <div class="label">Item</div>
+ <div class="text"> '</div>
+ <div class="data" data-tag="name" data-key="key">bolt</div>
+ <div class="text">':</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">Total sold</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="sold">4123.0</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">In stock</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data effect-inverse color-fg-inverse color-bg-inverse" data-tag="in-stock">144</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">On order</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="on-order">42</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">SKU</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="sku" data-key="key">HRD-000-632</div>
+</div>
+<div class="line">
+ <div class="label">Item</div>
+ <div class="text"> '</div>
+ <div class="data" data-tag="name" data-key="key">water</div>
+ <div class="text">':</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">Total sold</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="sold">17.0</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">In stock</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data effect-inverse color-fg-inverse color-bg-inverse" data-tag="in-stock">14</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">On order</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="on-order">2</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">SKU</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="sku" data-key="key">GRO-000-2331</div>
+</div>
+<div class="line">
+ <div class="label">Item</div>
+ <div class="text"> '</div>
+ <div class="data" data-tag="name" data-key="key">fish</div>
+ <div class="text">':</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label effect-bold color-fg-white color-bg-blue">Total sold</div>
+ <div class="text effect-bold color-fg-white color-bg-blue">: </div>
+ <div class="data effect-bold color-fg-white color-bg-blue" data-tag="sold">1321.0</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">In stock</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="in-stock">45</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">On order</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="on-order">1</div>
+</div>
+<div class="line">
+ <div class="padding"> </div>
+ <div class="label">SKU</div>
+ <div class="text">: </div>
+ <div class="data" data-tag="sku" data-key="key">GRO-000-533</div>
+</div>
+<div class="line">
+ <div class="label">Item</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="item">gum</div>
+</div>
+<div class="line">
+ <div class="label">Item</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="item">rope</div>
+</div>
+<div class="line">
+ <div class="label">Item</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="item">ladder</div>
+</div>
+<div class="line">
+ <div class="label">Item</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="item">bolt</div>
+</div>
+<div class="line">
+ <div class="label">Item</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="item">water</div>
+</div>
+<div class="line">
+ <div class="text">X</div>
+ <div class="text">X</div>
+ <div class="text">X</div>
+ <div class="text">X</div>
+ <div class="text">X</div>
+ <div class="text">X</div>
+ <div class="text">X</div>
+ <div class="text">X</div>
+</div>
+<div class="line">
+ <div class="text">X</div>
+ <div class="padding"> </div>
+ <div class="text">X</div>
+ <div class="label">Cost</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="cost">425</div>
+</div>
+<div class="line">
+ <div class="text">X</div>
+ <div class="padding"> </div>
+ <div class="text">X</div>
+ <div class="label">Cost</div>
+ <div class="decoration">:</div>
+ <div class="padding"> </div>
+ <div class="data" data-tag="cost">455</div>
+</div>
diff --git a/contrib/libxo/tests/core/saved/test_10.J.err b/contrib/libxo/tests/core/saved/test_10.J.err
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/contrib/libxo/tests/core/saved/test_10.J.err
diff --git a/contrib/libxo/tests/core/saved/test_10.J.out b/contrib/libxo/tests/core/saved/test_10.J.out
new file mode 100644
index 000000000000..5091685fc745
--- /dev/null
+++ b/contrib/libxo/tests/core/saved/test_10.J.out
@@ -0,0 +1,2 @@
+{"__version": "3.1.4", "top": {"data": {"item": [],"data":"bold","data":"bold-ul","data":"triple","data":"inv-ul","data":"underline","data":"plain", "item": [{"sku":"GRO-000-415","name":"gum","sold":1412,"in-stock":54,"on-order":10}, {"sku":"HRD-000-212","name":"rope","sold":85,"in-stock":4,"on-order":2}, {"sku":"HRD-000-517","name":"ladder","sold":0,"in-stock":2,"on-order":1}, {"sku":"HRD-000-632","name":"bolt","sold":4123,"in-stock":144,"on-order":42}, {"sku":"GRO-000-2331","name":"water","sold":17,"in-stock":14,"on-order":2}]}, "data": {"item": [{"sku":"GRO-000-415","name":"gum","sold":1412.0,"in-stock":54,"on-order":10}, {"sku":"HRD-000-212","name":"rope","sold":85.0,"in-stock":4,"on-order":2}, {"sku":"HRD-000-517","name":"ladder","sold":0,"in-stock":2,"on-order":1}, {"sku":"HRD-000-632","name":"bolt","sold":4123.0,"in-stock":144,"on-order":42}, {"sku":"GRO-000-2331","name":"water","sold":17.0,"in-stock":14,"on-order":2}]}, "data": {"item": [{"sku":"GRO-000-533","name":"fish","sold":1321.0,"in-stock":45,"on-order":1}]}, "data": {"item": ["gum","rope","ladder","bolt","water"]},"cost":425,"cost":455}
+}
diff --git a/contrib/libxo/tests/core/saved/test_10.JP.err b/contrib/libxo/tests/core/saved/test_10.JP.err
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/contrib/libxo/tests/core/saved/test_10.JP.err
diff --git a/contrib/libxo/tests/core/saved/test_10.JP.out b/contrib/libxo/tests/core/saved/test_10.JP.out
new file mode 100644
index 000000000000..0ca326995a7b
--- /dev/null
+++ b/contrib/libxo/tests/core/saved/test_10.JP.out
@@ -0,0 +1,113 @@
+{
+ "__version": "3.1.4",
+ "top": {
+ "data": {
+ "item": [
+ ],
+ "data": "bold",
+ "data": "bold-ul",
+ "data": "triple",
+ "data": "inv-ul",
+ "data": "underline",
+ "data": "plain",
+ "item": [
+ {
+ "sku": "GRO-000-415",
+ "name": "gum",
+ "sold": 1412,
+ "in-stock": 54,
+ "on-order": 10
+ },
+ {
+ "sku": "HRD-000-212",
+ "name": "rope",
+ "sold": 85,
+ "in-stock": 4,
+ "on-order": 2
+ },
+ {
+ "sku": "HRD-000-517",
+ "name": "ladder",
+ "sold": 0,
+ "in-stock": 2,
+ "on-order": 1
+ },
+ {
+ "sku": "HRD-000-632",
+ "name": "bolt",
+ "sold": 4123,
+ "in-stock": 144,
+ "on-order": 42
+ },
+ {
+ "sku": "GRO-000-2331",
+ "name": "water",
+ "sold": 17,
+ "in-stock": 14,
+ "on-order": 2
+ }
+ ]
+ },
+ "data": {
+ "item": [
+ {
+ "sku": "GRO-000-415",
+ "name": "gum",
+ "sold": 1412.0,
+ "in-stock": 54,
+ "on-order": 10
+ },
+ {
+ "sku": "HRD-000-212",
+ "name": "rope",
+ "sold": 85.0,
+ "in-stock": 4,
+ "on-order": 2
+ },
+ {
+ "sku": "HRD-000-517",
+ "name": "ladder",
+ "sold": 0,
+ "in-stock": 2,
+ "on-order": 1
+ },
+ {
+ "sku": "HRD-000-632",
+ "name": "bolt",
+ "sold": 4123.0,
+ "in-stock": 144,
+ "on-order": 42
+ },
+ {
+ "sku": "GRO-000-2331",
+ "name": "water",
+ "sold": 17.0,
+ "in-stock": 14,
+ "on-order": 2
+ }
+ ]
+ },
+ "data": {
+ "item": [
+ {
+ "sku": "GRO-000-533",
+ "name": "fish",
+ "sold": 1321.0,
+ "in-stock": 45,
+ "on-order": 1
+ }
+ ]
+ },
+ "data": {
+ "item": [
+ "gum",
+ "rope",
+ "ladder",
+ "bolt",
+ "water"
+ ]
+ },
+ "cost": 425,
+ "cost": 455
+ }
+}
diff --git a/contrib/libxo/tests/core/saved/test_10.T.err b/contrib/libxo/tests/core/saved/test_10.T.err
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/contrib/libxo/tests/core/saved/test_10.T.err
diff --git a/contrib/libxo/tests/core/saved/test_10.T.out b/contrib/libxo/tests/core/saved/test_10.T.out
new file mode 100644
index 000000000000..21fa81bc9aae
--- /dev/null
+++ b/contrib/libxo/tests/core/saved/test_10.T.out
@@ -0,0 +1,48 @@
+bluegreenredyellowdefault
+bold bold-ul triple inv-ul underline plain
+Item  Total Sold In Stock On Order SKU
+gum 1412 54 10 GRO-000-415
+rope 85 4 2 HRD-000-212
+ladder 0 2 1 HRD-000-517
+bolt 4123 144 42 HRD-000-632
+water 17 14 2 GRO-000-2331
+
+
+Item 'gum':
+ Total sold: 1412.0
+ In stock: 54
+ On order: 10
+ SKU: GRO-000-415
+Item 'rope':
+ Total sold: 85.0
+ In stock: 4
+ On order: 2
+ SKU: HRD-000-212
+Item 'ladder':
+ Total sold: 0
+ In stock: 2
+ On order: 1
+ SKU: HRD-000-517
+Item 'bolt':
+ Total sold: 4123.0
+ In stock: 144
+ On order: 42
+ SKU: HRD-000-632
+Item 'water':
+ Total sold: 17.0
+ In stock: 14
+ On order: 2
+ SKU: GRO-000-2331
+Item 'fish':
+ Total sold: 1321.0
+ In stock: 45
+ On order: 1
+ SKU: GRO-000-533
+Item: gum
+Item: rope
+Item: ladder
+Item: bolt
+Item: water
+XXXXXXXX
+X XCost: 425
+X XCost: 455
diff --git a/contrib/libxo/tests/core/saved/test_10.X.err b/contrib/libxo/tests/core/saved/test_10.X.err
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/contrib/libxo/tests/core/saved/test_10.X.err
diff --git a/contrib/libxo/tests/core/saved/test_10.X.out b/contrib/libxo/tests/core/saved/test_10.X.out
new file mode 100644
index 000000000000..49c6dd88c4fd
--- /dev/null
+++ b/contrib/libxo/tests/core/saved/test_10.X.out
@@ -0,0 +1 @@
+<top __version="3.1.4"><data test="value"><data test2="value2">bold</data><data>bold-ul</data><data>triple</data><data>inv-ul</data><data>underline</data><data>plain</data><item><sku test3="value3" key="key">GRO-000-415</sku><name key="key">gum</name><sold>1412</sold><in-stock>54</in-stock><on-order>10</on-order></item><item><sku test3="value3" key="key">HRD-000-212</sku><name key="key">rope</name><sold>85</sold><in-stock>4</in-stock><on-order>2</on-order></item><item><sku test3="value3" key="key">HRD-000-517</sku><name key="key">ladder</name><sold>0</sold><in-stock>2</in-stock><on-order>1</on-order></item><item><sku test3="value3" key="key">HRD-000-632</sku><name key="key">bolt</name><sold>4123</sold><in-stock>144</in-stock><on-order>42</on-order></item><item><sku test3="value3" key="key">GRO-000-2331</sku><name key="key">water</name><sold>17</sold><in-stock>14</in-stock><on-order>2</on-order></item></data><data><item><sku key="key">GRO-000-415</sku><name key="key">gum</name><sold>1412.0</sold><in-stock>54</in-stock><on-order>10</on-order></item><item><sku key="key">HRD-000-212</sku><name key="key">rope</name><sold>85.0</sold><in-stock>4</in-stock><on-order>2</on-order></item><item><sku key="key">HRD-000-517</sku><name key="key">ladder</name><sold>0</sold><in-stock>2</in-stock><on-order>1</on-order></item><item><sku key="key">HRD-000-632</sku><name key="key">bolt</name><sold>4123.0</sold><in-stock>144</in-stock><on-order>42</on-order></item><item><sku key="key">GRO-000-2331</sku><name key="key">water</name><sold>17.0</sold><in-stock>14</in-stock><on-order>2</on-order></item></data><data><item><sku key="key">GRO-000-533</sku><name key="key">fish</name><sold>1321.0</sold><in-stock>45</in-stock><on-order>1</on-order></item></data><data><item test4="value4">gum</item><item test4="value4">rope</item><item test4="value4">ladder</item><item test4="value4">bolt</item><item test4="value4">water</item></data><cost>425</cost><cost>455</cost></top> \ No newline at end of file
diff --git a/contrib/libxo/tests/core/saved/test_10.XP.err b/contrib/libxo/tests/core/saved/test_10.XP.err
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/contrib/libxo/tests/core/saved/test_10.XP.err
diff --git a/contrib/libxo/tests/core/saved/test_10.XP.out b/contrib/libxo/tests/core/saved/test_10.XP.out
new file mode 100644
index 000000000000..33c88d96214f
--- /dev/null
+++ b/contrib/libxo/tests/core/saved/test_10.XP.out
@@ -0,0 +1,100 @@
+<top __version="3.1.4">
+ <data test="value">
+ <data test2="value2">bold</data>
+ <data>bold-ul</data>
+ <data>triple</data>
+ <data>inv-ul</data>
+ <data>underline</data>
+ <data>plain</data>
+ <item>
+ <sku test3="value3" key="key">GRO-000-415</sku>
+ <name key="key">gum</name>
+ <sold>1412</sold>
+ <in-stock>54</in-stock>
+ <on-order>10</on-order>
+ </item>
+ <item>
+ <sku test3="value3" key="key">HRD-000-212</sku>
+ <name key="key">rope</name>
+ <sold>85</sold>
+ <in-stock>4</in-stock>
+ <on-order>2</on-order>
+ </item>
+ <item>
+ <sku test3="value3" key="key">HRD-000-517</sku>
+ <name key="key">ladder</name>
+ <sold>0</sold>
+ <in-stock>2</in-stock>
+ <on-order>1</on-order>
+ </item>
+ <item>
+ <sku test3="value3" key="key">HRD-000-632</sku>
+ <name key="key">bolt</name>
+ <sold>4123</sold>
+ <in-stock>144</in-stock>
+ <on-order>42</on-order>
+ </item>
+ <item>
+ <sku test3="value3" key="key">GRO-000-2331</sku>
+ <name key="key">water</name>
+ <sold>17</sold>
+ <in-stock>14</in-stock>
+ <on-order>2</on-order>
+ </item>
+ </data>
+ <data>
+ <item>
+ <sku key="key">GRO-000-415</sku>
+ <name key="key">gum</name>
+ <sold>1412.0</sold>
+ <in-stock>54</in-stock>
+ <on-order>10</on-order>
+ </item>
+ <item>
+ <sku key="key">HRD-000-212</sku>
+ <name key="key">rope</name>
+ <sold>85.0</sold>
+ <in-stock>4</in-stock>
+ <on-order>2</on-order>
+ </item>
+ <item>
+ <sku key="key">HRD-000-517</sku>
+ <name key="key">ladder</name>
+ <sold>0</sold>
+ <in-stock>2</in-stock>
+ <on-order>1</on-order>
+ </item>
+ <item>
+ <sku key="key">HRD-000-632</sku>
+ <name key="key">bolt</name>
+ <sold>4123.0</sold>
+ <in-stock>144</in-stock>
+ <on-order>42</on-order>
+ </item>
+ <item>
+ <sku key="key">GRO-000-2331</sku>
+ <name key="key">water</name>
+ <sold>17.0</sold>
+ <in-stock>14</in-stock>
+ <on-order>2</on-order>
+ </item>
+ </data>
+ <data>
+ <item>
+ <sku key="key">GRO-000-533</sku>
+ <name key="key">fish</name>
+ <sold>1321.0</sold>
+ <in-stock>45</in-stock>
+ <on-order>1</on-order>
+ </item>
+ </data>
+ <data>
+ <item test4="value4">gum</item>
+ <item test4="value4">rope</item>
+ <item test4="value4">ladder</item>
+ <item test4="value4">bolt</item>
+ <item test4="value4">water</item>
+ </data>
+ <cost>425</cost>
+ <cost>455</cost>
+</top>
diff --git a/contrib/libxo/tests/core/saved/test_10.err b/contrib/libxo/tests/core/saved/test_10.err
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/contrib/libxo/tests/core/saved/test_10.err
diff --git a/contrib/libxo/tests/core/saved/test_10.out b/contrib/libxo/tests/core/saved/test_10.out
new file mode 100644
index 000000000000..c2ad7a005274
--- /dev/null
+++ b/contrib/libxo/tests/core/saved/test_10.out
@@ -0,0 +1,38 @@
+Item Total Sold In Stock On Order SKU
+gum 1412 54 10 GRO-000-415
+rope 85 4 2 HRD-000-212
+ladder 0 2 1 HRD-000-517
+bolt 4123 144 42 HRD-000-632
+water 17 14 2 GRO-000-2331
+
+
+Item 'gum':
+ Total sold: 1412.0
+ In stock: 54
+ On order: 10
+ SKU: GRO-000-415
+Item 'rope':
+ Total sold: 85.0
+ In stock: 4
+ On order: 2
+ SKU: HRD-000-212
+Item 'ladder':
+ Total sold: 0
+ In stock: 2
+ On order: 1
+ SKU: HRD-000-517
+Item 'bolt':
+ Total sold: 4123.0
+ In stock: 144
+ On order: 42
+ SKU: HRD-000-632
+Item 'water':
+ Total sold: 17.0
+ In stock: 14
+ On order: 2
+ SKU: GRO-000-2331
+Item 'fish':
+ Total sold: 1321.0
+ In stock: 45
+ On order: 1
+ SKU: GRO-000-533
diff --git a/contrib/libxo/tests/core/test_05.c b/contrib/libxo/tests/core/test_05.c
index 61241b822b09..a883a8889906 100644
--- a/contrib/libxo/tests/core/test_05.c
+++ b/contrib/libxo/tests/core/test_05.c
@@ -39,23 +39,38 @@ main (int argc, char **argv)
{ "Ashley", "Ash", "Meter & Smith", 1440, 40 },
{ "0123456789", "0123456789", "012345678901234567890", 1440, 40 },
{ "ახლა", "გაიარო", "საერთაშორისო", 123, 90 },
+ { "෴ණ්ණ෴෴ණ්ණ෴", "Mick",
+ "෴ණ්ණ෴෴ණ්ණ෴෴ණ්ණ෴෴෴", 110, 20 },
{ NULL, NULL }
}, *ep = employees;
+ int rc;
argc = xo_parse_args(argc, argv);
if (argc < 0)
return 1;
xo_set_info(NULL, info, info_count);
+ xo_set_flags(NULL, XOF_COLUMNS);
xo_open_container("employees");
xo_emit("Οὐχὶ ταὐτὰ παρίσταταί μοι {:v1/%s}, {:v2/%s}\n",
"γιγνώσκειν", "ὦ ἄνδρες ᾿Αθηναῖοι");
- xo_emit("გთხოვთ {:v1/%s} {:v2/%s}\n",
+ rc = xo_emit("გთხოვთ {:v1/%s} {:v2/%s}\n",
"ახლავე გაიაროთ რეგისტრაცია",
"Unicode-ის მეათე საერთაშორისო");
+ xo_emit("{Twc:Width}{:width/%d}\n", rc);
+
+ /* Okay, Sinhala is uber cool ... */
+ rc = xo_emit("[{:sinhala}]\n", "෴ණ්ණ෴");
+ xo_emit("{Twc:Width}{:width/%d}\n", rc);
+ rc = xo_emit("[{:sinhala}]\n", "෴");
+ xo_emit("{Twc:Width}{:width/%d}\n", rc);
+ rc = xo_emit("[{:sinhala/%-4..4s/%s}]\n", "෴ණ්ණ෴෴ණ්ණ෴");
+ xo_emit("[{:not-sinhala/%-4..4s/%s}]\n", "123456");
+ rc = xo_emit("[{:tag/%s}]\n", "ර්‍ඝ");
+ xo_emit("{Twc:Width}{:width/%d}\n", rc);
xo_open_list("employee");
diff --git a/contrib/libxo/tests/core/test_10.c b/contrib/libxo/tests/core/test_10.c
new file mode 100644
index 000000000000..223ec55d47f9
--- /dev/null
+++ b/contrib/libxo/tests/core/test_10.c
@@ -0,0 +1,212 @@
+/*
+ * Copyright (c) 2014, Juniper Networks, Inc.
+ * All rights reserved.
+ * This SOFTWARE is licensed under the LICENSE provided in the
+ * ../Copyright file. By downloading, installing, copying, or otherwise
+ * using the SOFTWARE, you agree to be bound by the terms of that
+ * LICENSE.
+ * Phil Shafer, July 2014
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+#include <ctype.h>
+
+#include "xo.h"
+
+int
+main (int argc, char **argv)
+{
+ static char base_grocery[] = "GRO";
+ static char base_hardware[] = "HRD";
+ struct item {
+ const char *i_title;
+ int i_sold;
+ int i_instock;
+ int i_onorder;
+ const char *i_sku_base;
+ int i_sku_num;
+ };
+ struct item list[] = {
+ { "gum", 1412, 54, 10, base_grocery, 415 },
+ { "rope", 85, 4, 2, base_hardware, 212 },
+ { "ladder", 0, 2, 1, base_hardware, 517 },
+ { "bolt", 4123, 144, 42, base_hardware, 632 },
+ { "water", 17, 14, 2, base_grocery, 2331 },
+ { NULL, 0, 0, 0, NULL, 0 }
+ };
+ struct item list2[] = {
+ { "fish", 1321, 45, 1, base_grocery, 533 },
+ { NULL, 0, 0, 0, NULL, 0 }
+ };
+ struct item *ip;
+ xo_info_t info[] = {
+ { "in-stock", "number", "Number of items in stock" },
+ { "name", "string", "Name of the item" },
+ { "on-order", "number", "Number of items on order" },
+ { "sku", "string", "Stock Keeping Unit" },
+ { "sold", "number", "Number of items sold" },
+ { NULL, NULL, NULL },
+ };
+ int info_count = (sizeof(info) / sizeof(info[0])) - 1;
+
+ argc = xo_parse_args(argc, argv);
+ if (argc < 0)
+ return 1;
+
+ for (argc = 1; argv[argc]; argc++) {
+ if (strcmp(argv[argc], "xml") == 0)
+ xo_set_style(NULL, XO_STYLE_XML);
+ else if (strcmp(argv[argc], "json") == 0)
+ xo_set_style(NULL, XO_STYLE_JSON);
+ else if (strcmp(argv[argc], "text") == 0)
+ xo_set_style(NULL, XO_STYLE_TEXT);
+ else if (strcmp(argv[argc], "html") == 0)
+ xo_set_style(NULL, XO_STYLE_HTML);
+ else if (strcmp(argv[argc], "pretty") == 0)
+ xo_set_flags(NULL, XOF_PRETTY);
+ else if (strcmp(argv[argc], "xpath") == 0)
+ xo_set_flags(NULL, XOF_XPATH);
+ else if (strcmp(argv[argc], "info") == 0)
+ xo_set_flags(NULL, XOF_INFO);
+ else if (strcmp(argv[argc], "error") == 0) {
+ close(-1);
+ xo_err(1, "error detected");
+ }
+ }
+
+ xo_set_info(NULL, info, info_count);
+ xo_set_flags(NULL, XOF_KEYS);
+
+ /* Normally one would use "XOF_COLOR_ALLOWED", but we want to force it */
+ xo_set_flags(NULL, XOF_COLOR);
+
+ xo_set_version("3.1.4");
+
+ xo_open_container_h(NULL, "top");
+
+ xo_attr("test", "value");
+ xo_open_container("data");
+ xo_open_list("item");
+ xo_attr("test2", "value2");
+
+ static const char *colors[] =
+ { "blue", "green", "red", "yellow", "default", NULL };
+
+ int i;
+ for (i = 0; colors[i]; i++) {
+ if (i > 0)
+ xo_emit("{C:/bg-%s}", colors[i-1]);
+ xo_emit("{C:/fg-%s}{T:/%s}", colors[i], colors[i]);
+ }
+ xo_emit("{C:reset}\n");
+
+ xo_emit("{C:bold}{:data} {C:underline}{:data} {C:inverse}{:data} "
+ "{C:no-bold}{:data} {C:no-inverse}{:data} "
+ "{C:no-underline}{:data}\n",
+ "bold", "bold-ul", "triple", "inv-ul", "underline", "plain");
+
+ xo_emit("{T:Item/%-10s}{C:bold,underline}{T:Total Sold/%12s}{C:no-bold}"
+ "{T:In Stock/%12s}{C:/%s}"
+ "{T:On Order/%12s}{C:normal}{T:SKU/%5s}\n", "inverse");
+
+#if 0
+ xo_finish();
+ return 0;
+#endif
+
+ for (ip = list; ip->i_title; ip++) {
+ xo_open_instance("item");
+ xo_attr("test3", "value3");
+
+ xo_emit("{keq:sku/%s-%u/%s-000-%u}"
+ "{k:name/%-10s/%s}{n:sold/%12u/%u}"
+ "{C:/%s}{:in-stock/%12u/%u}{C:normal}"
+ "{C:/fg-%s}{:on-order/%12u/%u}{C:/fg-default}"
+ "{qkd:sku/%5s-000-%u/%s-000-%u}\n",
+ ip->i_sku_base, ip->i_sku_num,
+ ip->i_title, ip->i_sold,
+ (ip->i_instock < 5) ? "inverse" : "normal", ip->i_instock,
+ (ip->i_onorder > 5) ? "yellow" : "default", ip->i_onorder,
+ ip->i_sku_base, ip->i_sku_num);
+
+ xo_close_instance("item");
+ }
+
+ xo_close_list("item");
+ xo_close_container("data");
+
+ xo_emit("\n\n");
+
+ xo_open_container("data");
+ xo_open_list("item");
+
+ for (ip = list; ip->i_title; ip++) {
+ xo_open_instance("item");
+
+ xo_emit("{keq:sku/%s-%u/%s-000-%u}", ip->i_sku_base, ip->i_sku_num);
+ xo_emit("{L:Item} '{k:name/%s}':\n", ip->i_title);
+ xo_emit("{P: }{L:Total sold}: {n:sold/%u%s}\n",
+ ip->i_sold, ip->i_sold ? ".0" : "");
+ xo_emit("{P: }{Lcw:In stock}{C:inverse}{:in-stock/%u}{C:}\n",
+ ip->i_instock);
+ xo_emit("{P: }{Lcw:On order}{:on-order/%u}\n", ip->i_onorder);
+ xo_emit("{P: }{L:SKU}: {qkd:sku/%s-000-%u}\n",
+ ip->i_sku_base, ip->i_sku_num);
+
+ xo_close_instance("item");
+ }
+
+ xo_close_list("item");
+ xo_close_container("data");
+
+ xo_open_container("data");
+ xo_open_list("item");
+
+ for (ip = list2; ip->i_title; ip++) {
+ xo_open_instance("item");
+
+ xo_emit("{keq:sku/%s-%u/%s-000-%u}", ip->i_sku_base, ip->i_sku_num);
+ xo_emit("{L:Item} '{k:name/%s}':\n", ip->i_title);
+ xo_emit("{P: }{C:bg-blue , fg-white, bold }{L:Total sold}: "
+ "{n:sold/%u%s}{C:}\n",
+ ip->i_sold, ip->i_sold ? ".0" : "");
+ xo_emit("{P: }{Lcw:In stock}{:in-stock/%u}\n", ip->i_instock);
+ xo_emit("{P: }{Lcw:On order}{:on-order/%u}\n", ip->i_onorder);
+ xo_emit("{P: }{L:SKU}: {qkd:sku/%s-000-%u}\n",
+ ip->i_sku_base, ip->i_sku_num);
+
+ xo_close_instance("item");
+ }
+
+ xo_close_list("item");
+ xo_close_container("data");
+
+ xo_open_container("data");
+ xo_open_list("item");
+
+ for (ip = list; ip->i_title; ip++) {
+ xo_attr("test4", "value4");
+ xo_emit("{Lwc:Item}{l:item}\n", ip->i_title);
+ }
+
+ xo_close_list("item");
+ xo_close_container("data");
+
+ xo_emit("X{P:}X", "epic fail");
+ xo_emit("X{T:}X", "epic fail");
+ xo_emit("X{N:}X", "epic fail");
+ xo_emit("X{L:}X\n", "epic fail");
+
+ xo_emit("X{P: }X{Lwc:Cost}{:cost/%u}\n", 425);
+ xo_emit("X{P:/%30s}X{Lwc:Cost}{:cost/%u}\n", "", 455);
+
+ xo_close_container_h(NULL, "top");
+
+ xo_finish();
+
+ return 0;
+}