diff --git a/test/data/anki-note-builder-test-results.json b/test/data/anki-note-builder-test-results.json
index 816c1dab..b752e878 100644
--- a/test/data/anki-note-builder-test-results.json
+++ b/test/data/anki-note-builder-test-results.json
@@ -2711,5 +2711,40 @@
"url": "url:"
}
]
+ },
+ {
+ "name": "Structured content test",
+ "results": [
+ {
+ "audio": "",
+ "clipboard-image": "",
+ "clipboard-text": "",
+ "cloze-body": "構造",
+ "cloze-prefix": "cloze-prefix",
+ "cloze-suffix": "cloze-suffix",
+ "conjugation": "",
+ "dictionary": "Test Dictionary 2",
+ "document-title": "title",
+ "expression": "構造",
+ "frequencies": "",
+ "furigana": "構造",
+ "furigana-plain": "構造[こうぞう]",
+ "glossary": "
(n, Test Dictionary 2) - kouzou definition 1
- kouzou definition 2
- kouzou definition 3 (構造)
",
+ "glossary-brief": "- kouzou definition 1
- kouzou definition 2
- kouzou definition 3 (構造)
",
+ "glossary-no-dictionary": "(n) - kouzou definition 1
- kouzou definition 2
- kouzou definition 3 (構造)
",
+ "part-of-speech": "Noun",
+ "pitch-accents": "No pitch accent data",
+ "pitch-accent-graphs": "No pitch accent data",
+ "pitch-accent-positions": "No pitch accent data",
+ "reading": "こうぞう",
+ "screenshot": "",
+ "search-query": "fullQuery",
+ "selection-text": "",
+ "sentence": "cloze-prefix構造cloze-suffix",
+ "sentence-furigana": "cloze-prefix構造cloze-suffix",
+ "tags": "n",
+ "url": "url:"
+ }
+ ]
}
]
\ No newline at end of file
diff --git a/test/data/dictionaries/valid-dictionary1/term_bank_1.json b/test/data/dictionaries/valid-dictionary1/term_bank_1.json
index 114ec88b..c8a83c9a 100644
--- a/test/data/dictionaries/valid-dictionary1/term_bank_1.json
+++ b/test/data/dictionaries/valid-dictionary1/term_bank_1.json
@@ -307,5 +307,14 @@
]}
],
100, "P E1"
+ ],
+ [
+ "構造", "こうぞう", "n", "n", 35,
+ [
+ "kouzou definition 1",
+ {"type": "structured-content", "content": "kouzou definition 2"},
+ {"type": "structured-content", "content": "kouzou definition 3 (構造)"}
+ ],
+ 101, "P E1"
]
]
\ No newline at end of file
diff --git a/test/data/translator-test-inputs.json b/test/data/translator-test-inputs.json
index daee53a4..f6b5ea67 100644
--- a/test/data/translator-test-inputs.json
+++ b/test/data/translator-test-inputs.json
@@ -328,6 +328,13 @@
"mode": "split",
"text": "土木工事",
"options": "default"
+ },
+ {
+ "name": "Structured content test",
+ "func": "findTerms",
+ "mode": "split",
+ "text": "構造",
+ "options": "default"
}
]
}
\ No newline at end of file
diff --git a/test/data/translator-test-results-note-data1.json b/test/data/translator-test-results-note-data1.json
index a297f587..d686563c 100644
--- a/test/data/translator-test-results-note-data1.json
+++ b/test/data/translator-test-results-note-data1.json
@@ -28213,5 +28213,155 @@
"media": {}
}
]
+ },
+ {
+ "name": "Structured content test",
+ "noteDataList": [
+ {
+ "marker": "{marker}",
+ "definition": {
+ "type": "term",
+ "id": 21,
+ "source": "構造",
+ "rawSource": "構造",
+ "sourceTerm": "構造",
+ "reasons": [],
+ "score": 35,
+ "isPrimary": true,
+ "sequence": 101,
+ "dictionary": "Test Dictionary 2",
+ "dictionaryOrder": {
+ "index": 0,
+ "priority": 0
+ },
+ "dictionaryNames": [
+ "Test Dictionary 2"
+ ],
+ "expression": "構造",
+ "reading": "こうぞう",
+ "expressions": [
+ {
+ "sourceTerm": "構造",
+ "expression": "構造",
+ "reading": "こうぞう",
+ "termTags": [
+ {
+ "name": "E1",
+ "category": "default",
+ "notes": "example tag 1",
+ "order": 0,
+ "score": 0,
+ "dictionary": "Test Dictionary 2",
+ "redundant": false
+ },
+ {
+ "name": "P",
+ "category": "popular",
+ "notes": "popular term",
+ "order": 0,
+ "score": 0,
+ "dictionary": "Test Dictionary 2",
+ "redundant": false
+ }
+ ],
+ "frequencies": [],
+ "pitches": [],
+ "furiganaSegments": [
+ {
+ "text": "構造",
+ "furigana": "こうぞう"
+ }
+ ],
+ "termFrequency": "normal",
+ "wordClasses": [
+ "n"
+ ]
+ }
+ ],
+ "glossary": [
+ "kouzou definition 1",
+ {
+ "type": "structured-content",
+ "content": "kouzou definition 2"
+ },
+ {
+ "type": "structured-content",
+ "content": "kouzou definition 3 (構造)"
+ }
+ ],
+ "definitionTags": [
+ {
+ "name": "n",
+ "category": "partOfSpeech",
+ "notes": "noun",
+ "order": 0,
+ "score": 0,
+ "dictionary": "Test Dictionary 2",
+ "redundant": false
+ }
+ ],
+ "termTags": [
+ {
+ "name": "E1",
+ "category": "default",
+ "notes": "example tag 1",
+ "order": 0,
+ "score": 0,
+ "dictionary": "Test Dictionary 2",
+ "redundant": false
+ },
+ {
+ "name": "P",
+ "category": "popular",
+ "notes": "popular term",
+ "order": 0,
+ "score": 0,
+ "dictionary": "Test Dictionary 2",
+ "redundant": false
+ }
+ ],
+ "frequencies": [],
+ "pitches": [],
+ "sourceTermExactMatchCount": 1,
+ "url": "url:",
+ "cloze": {
+ "sentence": "",
+ "prefix": "",
+ "body": "",
+ "suffix": ""
+ },
+ "furiganaSegments": [
+ {
+ "text": "構造",
+ "furigana": "こうぞう"
+ }
+ ]
+ },
+ "glossaryLayoutMode": "default",
+ "compactTags": false,
+ "group": false,
+ "merge": false,
+ "modeTermKanji": false,
+ "modeTermKana": false,
+ "modeKanji": false,
+ "compactGlossaries": false,
+ "uniqueExpressions": [
+ "構造"
+ ],
+ "uniqueReadings": [
+ "こうぞう"
+ ],
+ "pitches": [],
+ "pitchCount": 0,
+ "context": {
+ "query": "query",
+ "fullQuery": "fullQuery",
+ "document": {
+ "title": "title"
+ }
+ },
+ "media": {}
+ }
+ ]
}
]
\ No newline at end of file
diff --git a/test/data/translator-test-results.json b/test/data/translator-test-results.json
index cf2ced0a..98db0ef4 100644
--- a/test/data/translator-test-results.json
+++ b/test/data/translator-test-results.json
@@ -16117,5 +16117,116 @@
"frequencies": []
}
]
+ },
+ {
+ "name": "Structured content test",
+ "originalTextLength": 2,
+ "dictionaryEntries": [
+ {
+ "type": "term",
+ "isPrimary": true,
+ "inflections": [],
+ "score": 35,
+ "frequencyOrder": 0,
+ "dictionaryIndex": 0,
+ "dictionaryPriority": 0,
+ "sourceTermExactMatchCount": 1,
+ "maxTransformedTextLength": 2,
+ "headwords": [
+ {
+ "index": 0,
+ "term": "構造",
+ "reading": "こうぞう",
+ "sources": [
+ {
+ "originalText": "構造",
+ "transformedText": "構造",
+ "deinflectedText": "構造",
+ "matchType": "exact",
+ "matchSource": "term",
+ "isPrimary": true
+ }
+ ],
+ "tags": [
+ {
+ "name": "E1",
+ "category": "default",
+ "order": 0,
+ "score": 0,
+ "content": [
+ "example tag 1"
+ ],
+ "dictionaries": [
+ "Test Dictionary 2"
+ ],
+ "redundant": false
+ },
+ {
+ "name": "P",
+ "category": "popular",
+ "order": 0,
+ "score": 0,
+ "content": [
+ "popular term"
+ ],
+ "dictionaries": [
+ "Test Dictionary 2"
+ ],
+ "redundant": false
+ }
+ ],
+ "wordClasses": [
+ "n"
+ ]
+ }
+ ],
+ "definitions": [
+ {
+ "index": 0,
+ "headwordIndices": [
+ 0
+ ],
+ "dictionary": "Test Dictionary 2",
+ "dictionaryIndex": 0,
+ "dictionaryPriority": 0,
+ "id": 21,
+ "score": 35,
+ "frequencyOrder": 0,
+ "sequences": [
+ 101
+ ],
+ "isPrimary": true,
+ "tags": [
+ {
+ "name": "n",
+ "category": "partOfSpeech",
+ "order": 0,
+ "score": 0,
+ "content": [
+ "noun"
+ ],
+ "dictionaries": [
+ "Test Dictionary 2"
+ ],
+ "redundant": false
+ }
+ ],
+ "entries": [
+ "kouzou definition 1",
+ {
+ "type": "structured-content",
+ "content": "kouzou definition 2"
+ },
+ {
+ "type": "structured-content",
+ "content": "kouzou definition 3 (構造)"
+ }
+ ]
+ }
+ ],
+ "pronunciations": [],
+ "frequencies": []
+ }
+ ]
}
]
\ No newline at end of file
diff --git a/test/test-anki-note-builder.js b/test/test-anki-note-builder.js
index 3da67955..21aa89bc 100644
--- a/test/test-anki-note-builder.js
+++ b/test/test-anki-note-builder.js
@@ -34,7 +34,8 @@ async function createVM() {
const vm = new TranslatorVM({
Node,
NodeFilter,
- document
+ document,
+ location: new URL('https://yomichan.test/')
});
const dictionaryDirectory = path.join(__dirname, 'data', 'dictionaries', 'valid-dictionary1');
diff --git a/test/test-database.js b/test/test-database.js
index ef2c6b78..6124f42e 100644
--- a/test/test-database.js
+++ b/test/test-database.js
@@ -155,7 +155,7 @@ async function testDatabase1() {
media: {total: 4},
tagMeta: {total: 15},
termMeta: {total: 38, freq: 31, pitch: 7},
- terms: {total: 20}
+ terms: {total: 21}
}
};
@@ -182,8 +182,8 @@ async function testDatabase1() {
true
);
vm.assert.deepStrictEqual(counts, {
- counts: [{kanji: 2, kanjiMeta: 6, terms: 20, termMeta: 38, tagMeta: 15, media: 4}],
- total: {kanji: 2, kanjiMeta: 6, terms: 20, termMeta: 38, tagMeta: 15, media: 4}
+ counts: [{kanji: 2, kanjiMeta: 6, terms: 21, termMeta: 38, tagMeta: 15, media: 4}],
+ total: {kanji: 2, kanjiMeta: 6, terms: 21, termMeta: 38, tagMeta: 15, media: 4}
});
// Test find* functions