diff --git a/ext/data/templates/anki-field-templates-upgrade-v13.handlebars b/ext/data/templates/anki-field-templates-upgrade-v13.handlebars
index b3e0f1b9e4..afa5a2c0bf 100644
--- a/ext/data/templates/anki-field-templates-upgrade-v13.handlebars
+++ b/ext/data/templates/anki-field-templates-upgrade-v13.handlebars
@@ -63,3 +63,86 @@
{{=======}}
{{~#if (hasMedia "clipboardText")}}{{#getMedia "clipboardText"}}{{/getMedia}}{{/if~}}
{{>>>>>>>}}
+
+{{<<<<<<<}}
+{{#*inline "pitch-accent-item-downstep-notation"}}
+ {{~#scope~}}
+
+ {{~#set "style1a"~}}display:inline-block;position:relative;{{~/set~}}
+ {{~#set "style1b"~}}padding-right:0.1em;margin-right:0.1em;{{~/set~}}
+ {{~#set "style2a"~}}display:block;user-select:none;pointer-events:none;position:absolute;top:0.1em;left:0;right:0;height:0;border-top:0.1em solid;{{~/set~}}
+ {{~#set "style2b"~}}right:-0.1em;height:0.4em;border-right:0.1em solid;{{~/set~}}
+ {{~#each (getKanaMorae reading)~}}
+ {{~#set "style1"}}{{#get "style1a"}}{{/get}}{{/set~}}
+ {{~#set "style2"}}{{/set~}}
+ {{~#if (isMoraPitchHigh @index ../position)}}
+ {{~#set "style2"}}{{#get "style2a"}}{{/get}}{{/set~}}
+ {{~#if (op "!" (isMoraPitchHigh (op "+" @index 1) ../position))~}}
+ {{~#set "style1" (op "+" (get "style1") (get "style1b"))}}{{/set~}}
+ {{~#set "style2" (op "+" (get "style2") (get "style2b"))}}{{/set~}}
+ {{~/if~}}
+ {{~/if~}}
+ {{{.}}}
+ {{~/each~}}
+
+ {{~/scope~}}
+{{/inline}}
+
+{{#*inline "pitch-accent-item-graph-position-x"}}{{#op "+" 25 (op "*" index 50)}}{{/op}}{{/inline}}
+{{#*inline "pitch-accent-item-graph-position-y"}}{{#op "+" 25 (op "?:" (isMoraPitchHigh index position) 0 50)}}{{/op}}{{/inline}}
+{{#*inline "pitch-accent-item-graph-position"}}{{> pitch-accent-item-graph-position-x index=index position=position}} {{> pitch-accent-item-graph-position-y index=index position=position}}{{/inline}}
+{{#*inline "pitch-accent-item-graph"}}
+ {{~#scope~}}
+ {{~#set "morae" (getKanaMorae reading)}}{{/set~}}
+ {{~#set "morae-count" (property (get "morae") "length")}}{{/set~}}
+
+ {{~/scope~}}
+{{/inline}}
+
+{{#*inline "pitch-accent-item-position"~}}
+ [{{position}}]
+{{~/inline}}
+
+{{#*inline "pitch-accent-item"}}
+ {{~#if (op "==" format "downstep-notation")~}}
+ {{~> pitch-accent-item-downstep-notation~}}
+ {{~else if (op "==" format "graph")~}}
+ {{~> pitch-accent-item-graph~}}
+ {{~else if (op "==" format "position")~}}
+ {{~> pitch-accent-item-position~}}
+ {{~/if~}}
+{{/inline}}
+{{=======}}
+{{#*inline "pitch-accent-item"}}
+ {{~#pronunciation format=format reading=reading downstepPosition=position nasalPositions=nasalPositions devoicePositions=devoicePositions~}}{{~/pronunciation~}}
+{{/inline}}
+{{>>>>>>>}}
+
+{{<<<<<<<}}
+{{#*inline "pitch-accents"}}
+ {{~> pitch-accent-list format='downstep-notation'~}}
+{{/inline}}
+{{=======}}
+{{#*inline "pitch-accents"}}
+ {{~> pitch-accent-list format='text'~}}
+{{/inline}}
+{{>>>>>>>}}
diff --git a/ext/data/templates/default-anki-field-templates.handlebars b/ext/data/templates/default-anki-field-templates.handlebars
index 92f9c6b7bd..31d5d13fb9 100644
--- a/ext/data/templates/default-anki-field-templates.handlebars
+++ b/ext/data/templates/default-anki-field-templates.handlebars
@@ -183,71 +183,8 @@
{{/inline}}
{{! Pitch Accents }}
-{{#*inline "pitch-accent-item-downstep-notation"}}
- {{~#scope~}}
-
- {{~#set "style1a"~}}display:inline-block;position:relative;{{~/set~}}
- {{~#set "style1b"~}}padding-right:0.1em;margin-right:0.1em;{{~/set~}}
- {{~#set "style2a"~}}display:block;user-select:none;pointer-events:none;position:absolute;top:0.1em;left:0;right:0;height:0;border-top:0.1em solid;{{~/set~}}
- {{~#set "style2b"~}}right:-0.1em;height:0.4em;border-right:0.1em solid;{{~/set~}}
- {{~#each (getKanaMorae reading)~}}
- {{~#set "style1"}}{{#get "style1a"}}{{/get}}{{/set~}}
- {{~#set "style2"}}{{/set~}}
- {{~#if (isMoraPitchHigh @index ../position)}}
- {{~#set "style2"}}{{#get "style2a"}}{{/get}}{{/set~}}
- {{~#if (op "!" (isMoraPitchHigh (op "+" @index 1) ../position))~}}
- {{~#set "style1" (op "+" (get "style1") (get "style1b"))}}{{/set~}}
- {{~#set "style2" (op "+" (get "style2") (get "style2b"))}}{{/set~}}
- {{~/if~}}
- {{~/if~}}
- {{{.}}}
- {{~/each~}}
-
- {{~/scope~}}
-{{/inline}}
-
-{{#*inline "pitch-accent-item-graph-position-x"}}{{#op "+" 25 (op "*" index 50)}}{{/op}}{{/inline}}
-{{#*inline "pitch-accent-item-graph-position-y"}}{{#op "+" 25 (op "?:" (isMoraPitchHigh index position) 0 50)}}{{/op}}{{/inline}}
-{{#*inline "pitch-accent-item-graph-position"}}{{> pitch-accent-item-graph-position-x index=index position=position}} {{> pitch-accent-item-graph-position-y index=index position=position}}{{/inline}}
-{{#*inline "pitch-accent-item-graph"}}
- {{~#scope~}}
- {{~#set "morae" (getKanaMorae reading)}}{{/set~}}
- {{~#set "morae-count" (property (get "morae") "length")}}{{/set~}}
-
- {{~/scope~}}
-{{/inline}}
-
-{{#*inline "pitch-accent-item-position"~}}
- [{{position}}]
-{{~/inline}}
-
{{#*inline "pitch-accent-item"}}
- {{~#if (op "==" format "downstep-notation")~}}
- {{~> pitch-accent-item-downstep-notation~}}
- {{~else if (op "==" format "graph")~}}
- {{~> pitch-accent-item-graph~}}
- {{~else if (op "==" format "position")~}}
- {{~> pitch-accent-item-position~}}
- {{~/if~}}
+ {{~#pronunciation format=format reading=reading downstepPosition=position nasalPositions=nasalPositions devoicePositions=devoicePositions~}}{{~/pronunciation~}}
{{/inline}}
{{#*inline "pitch-accent-item-disambiguation"}}
@@ -280,7 +217,7 @@
{{/inline}}
{{#*inline "pitch-accents"}}
- {{~> pitch-accent-list format='downstep-notation'~}}
+ {{~> pitch-accent-list format='text'~}}
{{/inline}}
{{#*inline "pitch-accent-graphs"}}
diff --git a/ext/js/data/options-util.js b/ext/js/data/options-util.js
index d131d0c639..42d8a93ab5 100644
--- a/ext/js/data/options-util.js
+++ b/ext/js/data/options-util.js
@@ -857,6 +857,7 @@ class OptionsUtil {
// Added {selection-text} field marker.
// Added {sentence-furigana} field marker.
// Added anki.duplicateScopeCheckAllModels.
+ // Updated pronunciation templates.
await this._applyAnkiFieldTemplatesPatch(options, '/data/templates/anki-field-templates-upgrade-v13.handlebars');
for (const profile of options.profiles) {
profile.options.anki.duplicateScopeCheckAllModels = false;
diff --git a/ext/js/data/sandbox/anki-note-data-creator.js b/ext/js/data/sandbox/anki-note-data-creator.js
index 3622e837bf..e09c6d7b4b 100644
--- a/ext/js/data/sandbox/anki-note-data-creator.js
+++ b/ext/js/data/sandbox/anki-note-data-creator.js
@@ -159,11 +159,13 @@ class AnkiNoteDataCreator {
if (dictionaryEntry.type === 'term') {
for (const {dictionary, pitches} of DictionaryDataUtil.getPitchAccentInfos(dictionaryEntry)) {
const pitches2 = [];
- for (const {terms, reading, position, tags, exclusiveTerms, exclusiveReadings} of pitches) {
+ for (const {terms, reading, position, nasalPositions, devoicePositions, tags, exclusiveTerms, exclusiveReadings} of pitches) {
pitches2.push({
expressions: terms,
reading,
position,
+ nasalPositions,
+ devoicePositions,
tags,
exclusiveExpressions: exclusiveTerms,
exclusiveReadings
diff --git a/test/data/anki-note-builder-test-results.json b/test/data/anki-note-builder-test-results.json
index 00e7965b5c..39b5da1b42 100644
--- a/test/data/anki-note-builder-test-results.json
+++ b/test/data/anki-note-builder-test-results.json
@@ -326,9 +326,9 @@
"glossary-brief": "
- uchikomu definition 1
- uchikomu definition 2
",
"glossary-no-dictionary": "(vt) - uchikomu definition 1
- uchikomu definition 2
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- うちこむ
- うちこむ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [0]
- [3]
",
+ "pitch-accents": "- うちこむ
- うちこむ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [0]
- [3]
",
"reading": "うちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -356,9 +356,9 @@
"glossary-brief": "- buchikomu definition 1
- buchikomu definition 2
",
"glossary-no-dictionary": "(vt) - buchikomu definition 1
- buchikomu definition 2
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- ぶちこむ
- ぶちこむ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [0]
- [3]
",
+ "pitch-accents": "- ぶちこむ
- ぶちこむ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [0]
- [3]
",
"reading": "ぶちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -386,9 +386,9 @@
"glossary-brief": "- uchikomu definition 3
- uchikomu definition 4
",
"glossary-no-dictionary": "(vt) - uchikomu definition 3
- uchikomu definition 4
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- うちこむ
- うちこむ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [0]
- [3]
",
+ "pitch-accents": "- うちこむ
- うちこむ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [0]
- [3]
",
"reading": "うちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -416,9 +416,9 @@
"glossary-brief": "- buchikomu definition 3
- buchikomu definition 4
",
"glossary-no-dictionary": "(vt) - buchikomu definition 3
- buchikomu definition 4
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- ぶちこむ
- ぶちこむ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [0]
- [3]
",
+ "pitch-accents": "- ぶちこむ
- ぶちこむ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [0]
- [3]
",
"reading": "ぶちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -866,9 +866,9 @@
"glossary-brief": "- uchikomu definition 1
- uchikomu definition 2
",
"glossary-no-dictionary": "(vt) - uchikomu definition 1
- uchikomu definition 2
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- うちこむ
- うちこむ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [0]
- [3]
",
+ "pitch-accents": "- うちこむ
- うちこむ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [0]
- [3]
",
"reading": "うちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -896,9 +896,9 @@
"glossary-brief": "- uchikomu definition 3
- uchikomu definition 4
",
"glossary-no-dictionary": "(vt) - uchikomu definition 3
- uchikomu definition 4
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- うちこむ
- うちこむ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [0]
- [3]
",
+ "pitch-accents": "- うちこむ
- うちこむ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [0]
- [3]
",
"reading": "うちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -991,9 +991,9 @@
"glossary-brief": "- buchikomu definition 1
- buchikomu definition 2
",
"glossary-no-dictionary": "(vt) - buchikomu definition 1
- buchikomu definition 2
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- ぶちこむ
- ぶちこむ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [0]
- [3]
",
+ "pitch-accents": "- ぶちこむ
- ぶちこむ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [0]
- [3]
",
"reading": "ぶちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -1021,9 +1021,9 @@
"glossary-brief": "- buchikomu definition 3
- buchikomu definition 4
",
"glossary-no-dictionary": "(vt) - buchikomu definition 3
- buchikomu definition 4
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- ぶちこむ
- ぶちこむ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [0]
- [3]
",
+ "pitch-accents": "- ぶちこむ
- ぶちこむ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [0]
- [3]
",
"reading": "ぶちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -1163,9 +1163,9 @@
"glossary-brief": "- uchikomu definition 1
- uchikomu definition 2
- uchikomu definition 3
- uchikomu definition 4
",
"glossary-no-dictionary": "- (vt)
- uchikomu definition 1
- uchikomu definition 2
- (vt)
- uchikomu definition 3
- uchikomu definition 4
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- うちこむ
- うちこむ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [0]
- [3]
",
+ "pitch-accents": "- うちこむ
- うちこむ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [0]
- [3]
",
"reading": "うちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -1193,9 +1193,9 @@
"glossary-brief": "- buchikomu definition 1
- buchikomu definition 2
- buchikomu definition 3
- buchikomu definition 4
",
"glossary-no-dictionary": "- (vt)
- buchikomu definition 1
- buchikomu definition 2
- (vt)
- buchikomu definition 3
- buchikomu definition 4
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- ぶちこむ
- ぶちこむ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [0]
- [3]
",
+ "pitch-accents": "- ぶちこむ
- ぶちこむ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [0]
- [3]
",
"reading": "ぶちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -1348,9 +1348,9 @@
"glossary-brief": "- uchikomu definition 1
- uchikomu definition 2
- buchikomu definition 1
- buchikomu definition 2
- uchikomu definition 3
- uchikomu definition 4
- buchikomu definition 3
- buchikomu definition 4
",
"glossary-no-dictionary": "- (vt) (うちこむ only)
- uchikomu definition 1
- uchikomu definition 2
- (vt) (ぶちこむ only)
- buchikomu definition 1
- buchikomu definition 2
- (vt) (うちこむ only)
- uchikomu definition 3
- uchikomu definition 4
- (vt) (ぶちこむ only)
- buchikomu definition 3
- buchikomu definition 4
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- (うちこむ only) うちこむ
- (うちこむ only) うちこむ
- (ぶちこむ only) ぶちこむ
- (ぶちこむ only) ぶちこむ
",
- "pitch-accent-graphs": "- (うちこむ only)
- (うちこむ only)
- (ぶちこむ only)
- (ぶちこむ only)
",
- "pitch-accent-positions": "- (うちこむ only) [0]
- (うちこむ only) [3]
- (ぶちこむ only) [0]
- (ぶちこむ only) [3]
",
+ "pitch-accents": "- (うちこむ only) うちこむ
- (うちこむ only) うちこむ
- (ぶちこむ only) ぶちこむ
- (ぶちこむ only) ぶちこむ
",
+ "pitch-accent-graphs": "- (うちこむ only)
- (うちこむ only)
- (ぶちこむ only)
- (ぶちこむ only)
",
+ "pitch-accent-positions": "- (うちこむ only) [0]
- (うちこむ only) [3]
- (ぶちこむ only) [0]
- (ぶちこむ only) [3]
",
"reading": "うちこむ、ぶちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -1473,9 +1473,9 @@
"glossary-brief": "- uchikomu definition 1
- uchikomu definition 2
",
"glossary-no-dictionary": "(vt) - uchikomu definition 1
- uchikomu definition 2
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- うちこむ
- うちこむ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [0]
- [3]
",
+ "pitch-accents": "- うちこむ
- うちこむ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [0]
- [3]
",
"reading": "うちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -1503,9 +1503,9 @@
"glossary-brief": "- buchikomu definition 1
- buchikomu definition 2
",
"glossary-no-dictionary": "(vt) - buchikomu definition 1
- buchikomu definition 2
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- ぶちこむ
- ぶちこむ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [0]
- [3]
",
+ "pitch-accents": "- ぶちこむ
- ぶちこむ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [0]
- [3]
",
"reading": "ぶちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -1533,9 +1533,9 @@
"glossary-brief": "- uchikomu definition 3
- uchikomu definition 4
",
"glossary-no-dictionary": "(vt) - uchikomu definition 3
- uchikomu definition 4
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- うちこむ
- うちこむ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [0]
- [3]
",
+ "pitch-accents": "- うちこむ
- うちこむ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [0]
- [3]
",
"reading": "うちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -1563,9 +1563,9 @@
"glossary-brief": "- buchikomu definition 3
- buchikomu definition 4
",
"glossary-no-dictionary": "(vt) - buchikomu definition 3
- buchikomu definition 4
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- ぶちこむ
- ぶちこむ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [0]
- [3]
",
+ "pitch-accents": "- ぶちこむ
- ぶちこむ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [0]
- [3]
",
"reading": "ぶちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -1778,9 +1778,9 @@
"glossary-brief": "- uchikomu definition 1
- uchikomu definition 2
",
"glossary-no-dictionary": "(vt) - uchikomu definition 1
- uchikomu definition 2
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- うちこむ
- うちこむ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [0]
- [3]
",
+ "pitch-accents": "- うちこむ
- うちこむ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [0]
- [3]
",
"reading": "うちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -1808,9 +1808,9 @@
"glossary-brief": "- buchikomu definition 1
- buchikomu definition 2
",
"glossary-no-dictionary": "(vt) - buchikomu definition 1
- buchikomu definition 2
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- ぶちこむ
- ぶちこむ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [0]
- [3]
",
+ "pitch-accents": "- ぶちこむ
- ぶちこむ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [0]
- [3]
",
"reading": "ぶちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -1838,9 +1838,9 @@
"glossary-brief": "- uchikomu definition 3
- uchikomu definition 4
",
"glossary-no-dictionary": "(vt) - uchikomu definition 3
- uchikomu definition 4
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- うちこむ
- うちこむ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [0]
- [3]
",
+ "pitch-accents": "- うちこむ
- うちこむ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [0]
- [3]
",
"reading": "うちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -1868,9 +1868,9 @@
"glossary-brief": "- buchikomu definition 3
- buchikomu definition 4
",
"glossary-no-dictionary": "(vt) - buchikomu definition 3
- buchikomu definition 4
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- ぶちこむ
- ぶちこむ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [0]
- [3]
",
+ "pitch-accents": "- ぶちこむ
- ぶちこむ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [0]
- [3]
",
"reading": "ぶちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -2083,9 +2083,9 @@
"glossary-brief": "- uchikomu definition 1
- uchikomu definition 2
",
"glossary-no-dictionary": "(vt) - uchikomu definition 1
- uchikomu definition 2
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- うちこむ
- うちこむ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [0]
- [3]
",
+ "pitch-accents": "- うちこむ
- うちこむ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [0]
- [3]
",
"reading": "うちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -2113,9 +2113,9 @@
"glossary-brief": "- buchikomu definition 1
- buchikomu definition 2
",
"glossary-no-dictionary": "(vt) - buchikomu definition 1
- buchikomu definition 2
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- ぶちこむ
- ぶちこむ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [0]
- [3]
",
+ "pitch-accents": "- ぶちこむ
- ぶちこむ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [0]
- [3]
",
"reading": "ぶちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -2143,9 +2143,9 @@
"glossary-brief": "- uchikomu definition 3
- uchikomu definition 4
",
"glossary-no-dictionary": "(vt) - uchikomu definition 3
- uchikomu definition 4
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- うちこむ
- うちこむ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [0]
- [3]
",
+ "pitch-accents": "- うちこむ
- うちこむ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [0]
- [3]
",
"reading": "うちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -2173,9 +2173,9 @@
"glossary-brief": "- buchikomu definition 3
- buchikomu definition 4
",
"glossary-no-dictionary": "(vt) - buchikomu definition 3
- buchikomu definition 4
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- ぶちこむ
- ぶちこむ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [0]
- [3]
",
+ "pitch-accents": "- ぶちこむ
- ぶちこむ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [0]
- [3]
",
"reading": "ぶちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -2493,9 +2493,9 @@
"glossary-brief": "- uchikomu definition 1
- uchikomu definition 2
- buchikomu definition 1
- buchikomu definition 2
- uchikomu definition 3
- uchikomu definition 4
- buchikomu definition 3
- buchikomu definition 4
",
"glossary-no-dictionary": "- (vt) (うちこむ only)
- uchikomu definition 1
- uchikomu definition 2
- (vt) (ぶちこむ only)
- buchikomu definition 1
- buchikomu definition 2
- (vt) (うちこむ only)
- uchikomu definition 3
- uchikomu definition 4
- (vt) (ぶちこむ only)
- buchikomu definition 3
- buchikomu definition 4
",
"part-of-speech": "Godan verb",
- "pitch-accents": "- (うちこむ only) うちこむ
- (うちこむ only) うちこむ
- (ぶちこむ only) ぶちこむ
- (ぶちこむ only) ぶちこむ
",
- "pitch-accent-graphs": "- (うちこむ only)
- (うちこむ only)
- (ぶちこむ only)
- (ぶちこむ only)
",
- "pitch-accent-positions": "- (うちこむ only) [0]
- (うちこむ only) [3]
- (ぶちこむ only) [0]
- (ぶちこむ only) [3]
",
+ "pitch-accents": "- (うちこむ only) うちこむ
- (うちこむ only) うちこむ
- (ぶちこむ only) ぶちこむ
- (ぶちこむ only) ぶちこむ
",
+ "pitch-accent-graphs": "- (うちこむ only)
- (うちこむ only)
- (ぶちこむ only)
- (ぶちこむ only)
",
+ "pitch-accent-positions": "- (うちこむ only) [0]
- (うちこむ only) [3]
- (ぶちこむ only) [0]
- (ぶちこむ only) [3]
",
"reading": "うちこむ、ぶちこむ",
"screenshot": "",
"search-query": "fullQuery",
@@ -2558,9 +2558,9 @@
"glossary-brief": "otemae definition
",
"glossary-no-dictionary": "(n) otemae definition
",
"part-of-speech": "Noun",
- "pitch-accents": "- おてまえ
- おてまえ
- おてまえ
",
- "pitch-accent-graphs": "
",
- "pitch-accent-positions": "- [2]
- [2]
- [0]
",
+ "pitch-accents": "- おてまえ
- おてまえ
- おてまえ
",
+ "pitch-accent-graphs": "
",
+ "pitch-accent-positions": "- [2]
- [2]
- [0]
",
"reading": "おてまえ",
"screenshot": "",
"search-query": "fullQuery",
@@ -2593,9 +2593,9 @@
"glossary-brief": "bangou definition
",
"glossary-no-dictionary": "(n) bangou definition
",
"part-of-speech": "Noun",
- "pitch-accents": "ばんごう",
- "pitch-accent-graphs": "",
- "pitch-accent-positions": "[3]",
+ "pitch-accents": "ばんこ゚う",
+ "pitch-accent-graphs": "",
+ "pitch-accent-positions": "[3]",
"reading": "ばんごう",
"screenshot": "",
"search-query": "fullQuery",
@@ -2628,9 +2628,9 @@
"glossary-brief": "chuugoshi definition
",
"glossary-no-dictionary": "(n) chuugoshi definition
",
"part-of-speech": "Noun",
- "pitch-accents": "ちゅうごし",
- "pitch-accent-graphs": "",
- "pitch-accent-positions": "[0]",
+ "pitch-accents": "ちゅうこ゚し",
+ "pitch-accent-graphs": "",
+ "pitch-accent-positions": "[0]",
"reading": "ちゅうごし",
"screenshot": "",
"search-query": "fullQuery",
@@ -2663,9 +2663,9 @@
"glossary-brief": "shogyouu definition
",
"glossary-no-dictionary": "(n) shogyouu definition
",
"part-of-speech": "Noun",
- "pitch-accents": "しょぎょう",
- "pitch-accent-graphs": "",
- "pitch-accent-positions": "[0]",
+ "pitch-accents": "しょき゚ょう",
+ "pitch-accent-graphs": "",
+ "pitch-accent-positions": "[0]",
"reading": "しょぎょう",
"screenshot": "",
"search-query": "fullQuery",
@@ -2698,9 +2698,9 @@
"glossary-brief": "dobokukouji definition
",
"glossary-no-dictionary": "(n) dobokukouji definition
",
"part-of-speech": "Noun",
- "pitch-accents": "どぼくこうじ",
- "pitch-accent-graphs": "",
- "pitch-accent-positions": "[4]",
+ "pitch-accents": "どぼくこうじ",
+ "pitch-accent-graphs": "",
+ "pitch-accent-positions": "[4]",
"reading": "どぼくこうじ",
"screenshot": "",
"search-query": "fullQuery",
diff --git a/test/data/translator-test-results-note-data1.json b/test/data/translator-test-results-note-data1.json
index d679287b9b..ee6102655d 100644
--- a/test/data/translator-test-results-note-data1.json
+++ b/test/data/translator-test-results-note-data1.json
@@ -2074,6 +2074,8 @@
],
"reading": "うちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -2084,6 +2086,8 @@
],
"reading": "うちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -2360,6 +2364,8 @@
],
"reading": "ぶちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -2370,6 +2376,8 @@
],
"reading": "ぶちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -2646,6 +2654,8 @@
],
"reading": "うちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -2656,6 +2666,8 @@
],
"reading": "うちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -2932,6 +2944,8 @@
],
"reading": "ぶちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -2942,6 +2956,8 @@
],
"reading": "ぶちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -5717,6 +5733,8 @@
],
"reading": "うちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -5727,6 +5745,8 @@
],
"reading": "うちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -6003,6 +6023,8 @@
],
"reading": "うちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -6013,6 +6035,8 @@
],
"reading": "うちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -6698,6 +6722,8 @@
],
"reading": "ぶちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -6708,6 +6734,8 @@
],
"reading": "ぶちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -6984,6 +7012,8 @@
],
"reading": "ぶちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -6994,6 +7024,8 @@
],
"reading": "ぶちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -7866,6 +7898,8 @@
],
"reading": "うちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -7876,6 +7910,8 @@
],
"reading": "うちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -8175,6 +8211,8 @@
],
"reading": "ぶちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -8185,6 +8223,8 @@
],
"reading": "ぶちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -9488,6 +9528,8 @@
],
"reading": "うちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": [
@@ -9500,6 +9542,8 @@
],
"reading": "うちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": [
@@ -9512,6 +9556,8 @@
],
"reading": "ぶちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": [
@@ -9524,6 +9570,8 @@
],
"reading": "ぶちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": [
@@ -10512,6 +10560,8 @@
],
"reading": "うちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -10522,6 +10572,8 @@
],
"reading": "うちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -10802,6 +10854,8 @@
],
"reading": "ぶちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -10812,6 +10866,8 @@
],
"reading": "ぶちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -11092,6 +11148,8 @@
],
"reading": "うちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -11102,6 +11160,8 @@
],
"reading": "うちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -11382,6 +11442,8 @@
],
"reading": "ぶちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -11392,6 +11454,8 @@
],
"reading": "ぶちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -12838,6 +12902,8 @@
],
"reading": "うちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -12848,6 +12914,8 @@
],
"reading": "うちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -13124,6 +13192,8 @@
],
"reading": "ぶちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -13134,6 +13204,8 @@
],
"reading": "ぶちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -13410,6 +13482,8 @@
],
"reading": "うちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -13420,6 +13494,8 @@
],
"reading": "うちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -13696,6 +13772,8 @@
],
"reading": "ぶちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -13706,6 +13784,8 @@
],
"reading": "ぶちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -15152,6 +15232,8 @@
],
"reading": "うちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -15162,6 +15244,8 @@
],
"reading": "うちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -15438,6 +15522,8 @@
],
"reading": "ぶちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -15448,6 +15534,8 @@
],
"reading": "ぶちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -15724,6 +15812,8 @@
],
"reading": "うちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -15734,6 +15824,8 @@
],
"reading": "うちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -16010,6 +16102,8 @@
],
"reading": "ぶちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -16020,6 +16114,8 @@
],
"reading": "ぶちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -18123,6 +18219,8 @@
],
"reading": "うちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": [
@@ -18135,6 +18233,8 @@
],
"reading": "うちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": [
@@ -18147,6 +18247,8 @@
],
"reading": "ぶちこむ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": [
@@ -18159,6 +18261,8 @@
],
"reading": "ぶちこむ",
"position": 3,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": [
@@ -18763,6 +18867,8 @@
],
"reading": "おてまえ",
"position": 2,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [
{
"name": "P1",
@@ -18787,6 +18893,8 @@
],
"reading": "おてまえ",
"position": 2,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [
{
"name": "P2",
@@ -18811,6 +18919,8 @@
],
"reading": "おてまえ",
"position": 0,
+ "nasalPositions": [],
+ "devoicePositions": [],
"tags": [
{
"name": "P2",
@@ -18981,6 +19091,10 @@
],
"reading": "ばんごう",
"position": 3,
+ "nasalPositions": [
+ 3
+ ],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -19137,6 +19251,10 @@
],
"reading": "ちゅうごし",
"position": 0,
+ "nasalPositions": [
+ 3
+ ],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -19293,6 +19411,10 @@
],
"reading": "しょぎょう",
"position": 0,
+ "nasalPositions": [
+ 2
+ ],
+ "devoicePositions": [],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
@@ -19449,6 +19571,10 @@
],
"reading": "どぼくこうじ",
"position": 4,
+ "nasalPositions": [],
+ "devoicePositions": [
+ 3
+ ],
"tags": [],
"exclusiveExpressions": [],
"exclusiveReadings": []
diff --git a/test/test-options-util.js b/test/test-options-util.js
index 10881af96b..255b6a2703 100644
--- a/test/test-options-util.js
+++ b/test/test-options-util.js
@@ -1013,6 +1013,174 @@ async function testFieldTemplatesUpdate(extDir) {
{{~#if (hasMedia "clipboardText")}}{{#getMedia "clipboardText"}}{{/getMedia}}{{/if~}}
{{/inline}}
+<<>>
+{{~> (lookup . "marker") ~}}`.trimStart()
+ },
+ // hasMedia/getMedia update
+ {
+ oldVersion: 12,
+ newVersion: 13,
+ old: `
+{{! Pitch Accents }}
+{{#*inline "pitch-accent-item-downstep-notation"}}
+ {{~#scope~}}
+
+ {{~#set "style1a"~}}display:inline-block;position:relative;{{~/set~}}
+ {{~#set "style1b"~}}padding-right:0.1em;margin-right:0.1em;{{~/set~}}
+ {{~#set "style2a"~}}display:block;user-select:none;pointer-events:none;position:absolute;top:0.1em;left:0;right:0;height:0;border-top:0.1em solid;{{~/set~}}
+ {{~#set "style2b"~}}right:-0.1em;height:0.4em;border-right:0.1em solid;{{~/set~}}
+ {{~#each (getKanaMorae reading)~}}
+ {{~#set "style1"}}{{#get "style1a"}}{{/get}}{{/set~}}
+ {{~#set "style2"}}{{/set~}}
+ {{~#if (isMoraPitchHigh @index ../position)}}
+ {{~#set "style2"}}{{#get "style2a"}}{{/get}}{{/set~}}
+ {{~#if (op "!" (isMoraPitchHigh (op "+" @index 1) ../position))~}}
+ {{~#set "style1" (op "+" (get "style1") (get "style1b"))}}{{/set~}}
+ {{~#set "style2" (op "+" (get "style2") (get "style2b"))}}{{/set~}}
+ {{~/if~}}
+ {{~/if~}}
+ {{{.}}}
+ {{~/each~}}
+
+ {{~/scope~}}
+{{/inline}}
+
+{{#*inline "pitch-accent-item-graph-position-x"}}{{#op "+" 25 (op "*" index 50)}}{{/op}}{{/inline}}
+{{#*inline "pitch-accent-item-graph-position-y"}}{{#op "+" 25 (op "?:" (isMoraPitchHigh index position) 0 50)}}{{/op}}{{/inline}}
+{{#*inline "pitch-accent-item-graph-position"}}{{> pitch-accent-item-graph-position-x index=index position=position}} {{> pitch-accent-item-graph-position-y index=index position=position}}{{/inline}}
+{{#*inline "pitch-accent-item-graph"}}
+ {{~#scope~}}
+ {{~#set "morae" (getKanaMorae reading)}}{{/set~}}
+ {{~#set "morae-count" (property (get "morae") "length")}}{{/set~}}
+
+ {{~/scope~}}
+{{/inline}}
+
+{{#*inline "pitch-accent-item-position"~}}
+ [{{position}}]
+{{~/inline}}
+
+{{#*inline "pitch-accent-item"}}
+ {{~#if (op "==" format "downstep-notation")~}}
+ {{~> pitch-accent-item-downstep-notation~}}
+ {{~else if (op "==" format "graph")~}}
+ {{~> pitch-accent-item-graph~}}
+ {{~else if (op "==" format "position")~}}
+ {{~> pitch-accent-item-position~}}
+ {{~/if~}}
+{{/inline}}
+
+{{#*inline "pitch-accent-item-disambiguation"}}
+ {{~#scope~}}
+ {{~#set "exclusive" (spread exclusiveExpressions exclusiveReadings)}}{{/set~}}
+ {{~#if (op ">" (property (get "exclusive") "length") 0)~}}
+ {{~#set "separator" ""~}}{{/set~}}
+ ({{#each (get "exclusive")~}}
+ {{~#get "separator"}}{{/get~}}{{{.}}}
+ {{~/each}} only)
+ {{~/if~}}
+ {{~/scope~}}
+{{/inline}}
+
+{{#*inline "pitch-accent-list"}}
+ {{~#if (op ">" pitchCount 0)~}}
+ {{~#if (op ">" pitchCount 1)~}}{{~/if~}}
+ {{~#each pitches~}}
+ {{~#each pitches~}}
+ {{~#if (op ">" ../../pitchCount 1)~}}- {{~/if~}}
+ {{~> pitch-accent-item-disambiguation~}}
+ {{~> pitch-accent-item format=../../format~}}
+ {{~#if (op ">" ../../pitchCount 1)~}}
{{~/if~}}
+ {{~/each~}}
+ {{~/each~}}
+ {{~#if (op ">" pitchCount 1)~}}
{{~/if~}}
+ {{~else~}}
+ No pitch accent data
+ {{~/if~}}
+{{/inline}}
+
+{{#*inline "pitch-accents"}}
+ {{~> pitch-accent-list format='downstep-notation'~}}
+{{/inline}}
+
+{{#*inline "pitch-accent-graphs"}}
+ {{~> pitch-accent-list format='graph'~}}
+{{/inline}}
+
+{{#*inline "pitch-accent-positions"}}
+ {{~> pitch-accent-list format='position'~}}
+{{/inline}}
+{{! End Pitch Accents }}
+
+{{~> (lookup . "marker") ~}}`.trimStart(),
+
+ expected: `
+{{! Pitch Accents }}
+{{#*inline "pitch-accent-item"}}
+ {{~#pronunciation format=format reading=reading downstepPosition=position nasalPositions=nasalPositions devoicePositions=devoicePositions~}}{{~/pronunciation~}}
+{{/inline}}
+
+{{#*inline "pitch-accent-item-disambiguation"}}
+ {{~#scope~}}
+ {{~#set "exclusive" (spread exclusiveExpressions exclusiveReadings)}}{{/set~}}
+ {{~#if (op ">" (property (get "exclusive") "length") 0)~}}
+ {{~#set "separator" ""~}}{{/set~}}
+ ({{#each (get "exclusive")~}}
+ {{~#get "separator"}}{{/get~}}{{{.}}}
+ {{~/each}} only)
+ {{~/if~}}
+ {{~/scope~}}
+{{/inline}}
+
+{{#*inline "pitch-accent-list"}}
+ {{~#if (op ">" pitchCount 0)~}}
+ {{~#if (op ">" pitchCount 1)~}}{{~/if~}}
+ {{~#each pitches~}}
+ {{~#each pitches~}}
+ {{~#if (op ">" ../../pitchCount 1)~}}- {{~/if~}}
+ {{~> pitch-accent-item-disambiguation~}}
+ {{~> pitch-accent-item format=../../format~}}
+ {{~#if (op ">" ../../pitchCount 1)~}}
{{~/if~}}
+ {{~/each~}}
+ {{~/each~}}
+ {{~#if (op ">" pitchCount 1)~}}
{{~/if~}}
+ {{~else~}}
+ No pitch accent data
+ {{~/if~}}
+{{/inline}}
+
+{{#*inline "pitch-accents"}}
+ {{~> pitch-accent-list format='text'~}}
+{{/inline}}
+
+{{#*inline "pitch-accent-graphs"}}
+ {{~> pitch-accent-list format='graph'~}}
+{{/inline}}
+
+{{#*inline "pitch-accent-positions"}}
+ {{~> pitch-accent-list format='position'~}}
+{{/inline}}
+{{! End Pitch Accents }}
+
<<>>
{{~> (lookup . "marker") ~}}`.trimStart()
}