diff --git a/src/1-one/output/api/html.js b/src/1-one/output/api/html.js
index 85a507f..70a32cf 100644
--- a/src/1-one/output/api/html.js
+++ b/src/1-one/output/api/html.js
@@ -60,11 +60,11 @@ const html = function (obj) {
this.docs.forEach(terms => {
for (let i = 0; i < terms.length; i += 1) {
const t = terms[i]
- out += t.pre || ''
- // do a span tag, inside the pre-punctuation
+ // do a span tag
if (Object.hasOwn(starts, t.id)) {
out += starts[t.id].join('')
}
+ out += t.pre || ''
out += t.text || ''
if (Object.hasOwn(ends, t.id)) {
out += ends[t.id].join('')
diff --git a/tests/one/output/html.test.js b/tests/one/output/html.test.js
new file mode 100644
index 0000000..c0eef7b
--- /dev/null
+++ b/tests/one/output/html.test.js
@@ -0,0 +1,61 @@
+import test from 'tape'
+import nlp from '../_lib.js'
+const here = '[one/html] '
+
+test('html-match', function (t) {
+ let doc = nlp(`match one two. one match two. one two match.`)
+ let html = doc.html({ i: 'match' })
+ t.equal(html, `match one two. one match two. one two match.`, here + 'html tag')
+
+ doc = nlp(`match one two. one match two.`)
+ html = doc.html({ '.foo': 'match' })
+ t.equal(html, `match one two. one match two.`, here + 'html class')
+
+ doc = nlp(`one match match two.`)
+ html = doc.html({ '#foo': 'match+' })
+ t.equal(html, `one match match two.`, here + 'html id')
+
+ doc = nlp(`one match two.`)
+ html = doc.html({ '.red': 'match+', '.blue': doc.match('two') })
+ t.equal(html, `one match two.`, here + 'html two classes')
+
+ doc = nlp(`if i can recall, my grey dog loves pizza crusts (they are really good).`)
+ html = doc.html({ '.red': 'my grey dog', '.blue': doc.match('loves') })
+ t.equal(
+ html,
+ `if i can recall, my grey dog loves pizza crusts (they are really good).`,
+ here + 'html pre test'
+ )
+
+ t.end()
+})
+
+test('html-nest', function (t) {
+ const doc = nlp(`one match two.`)
+ let html = doc.html({
+ i: 'match',
+ b: 'one match two',
+ })
+ t.equal(html, `one match two.`, here + 'easy nest')
+
+ html = doc.html({
+ b: 'match two',
+ i: 'match',
+ })
+ t.equal(html, `one match two.`, here + 'hard nest')
+
+ // html = doc.html({
+ // i: 'match',
+ // b: 'match two',
+ // })
+ // t.equal(html, `one match two.`, here + 'harder nest')
+
+ t.end()
+})
+
+test('html-implicit', function (t) {
+ const doc = nlp(`he's cool`)
+ const out = doc.html({ '.foo': '#Verb' })
+ t.equal(out, `he's cool`, here + 'implict')
+ t.end()
+})