summaryrefslogtreecommitdiff
path: root/ext/mixed
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2020-03-28 14:52:44 -0400
committertoasted-nutbread <toasted-nutbread@users.noreply.github.com>2020-03-28 14:52:44 -0400
commitaa2a0c09f446aaa4ac5b052f5b9afb040e37afc2 (patch)
treefca9ee7bce59c4ece5eaeb25ab4b59d8e3c7b19a /ext/mixed
parenta339bf69d3841fa97ce9f6673472bd451b813937 (diff)
Update how pitch accent expressions are disambiguated
Diffstat (limited to 'ext/mixed')
-rw-r--r--ext/mixed/css/display-dark.css1
-rw-r--r--ext/mixed/css/display-default.css1
-rw-r--r--ext/mixed/css/display.css21
-rw-r--r--ext/mixed/js/display-generator.js17
4 files changed, 33 insertions, 7 deletions
diff --git a/ext/mixed/css/display-dark.css b/ext/mixed/css/display-dark.css
index 7f49ca40..67fdb797 100644
--- a/ext/mixed/css/display-dark.css
+++ b/ext/mixed/css/display-dark.css
@@ -62,6 +62,7 @@ h2 { border-bottom-color: #2f2f2f; }
.term-definition-list,
.term-pitch-accent-group-list,
+.term-pitch-accent-expression-list,
.kanji-glossary-list {
color: #888888;
}
diff --git a/ext/mixed/css/display-default.css b/ext/mixed/css/display-default.css
index 38e1bf19..be7a37a9 100644
--- a/ext/mixed/css/display-default.css
+++ b/ext/mixed/css/display-default.css
@@ -62,6 +62,7 @@ h2 { border-bottom-color: #eeeeee; }
.term-definition-list,
.term-pitch-accent-group-list,
+.term-pitch-accent-expression-list,
.kanji-glossary-list {
color: #777777;
}
diff --git a/ext/mixed/css/display.css b/ext/mixed/css/display.css
index aeb88a1a..c150b12e 100644
--- a/ext/mixed/css/display.css
+++ b/ext/mixed/css/display.css
@@ -488,14 +488,25 @@ button.action-button {
.term-pitch-accent-group-tag-list {
margin-right: 0.375em;
}
-.entry[data-unique-expression-count="1"] .term-pitch-accent-expression-list {
+
+.term-pitch-accent-expression-list {
+ padding-right: 0.25em;
+}
+
+.term-pitch-accent-expression-list[data-count="0"] {
display: none;
}
-.term-pitch-accent-expression:not(:last-of-type):after {
- content: "\3001";
+
+.term-pitch-accent-expression-list:before {
+ content: "(";
}
-.term-pitch-accent-expression:last-of-type:after {
- content: "\FF1A";
+
+.term-pitch-accent-expression-list:after {
+ content: " only)";
+}
+
+.term-pitch-accent-expression+.term-pitch-accent-expression:before {
+ content: ", ";
}
.term-pitch-accent-tag-list:not([data-count="0"]) {
diff --git a/ext/mixed/js/display-generator.js b/ext/mixed/js/display-generator.js
index 30c82472..8177c31c 100644
--- a/ext/mixed/js/display-generator.js
+++ b/ext/mixed/js/display-generator.js
@@ -304,7 +304,7 @@ class DisplayGenerator {
}
createPitch(details) {
- const {expressions, reading, position, tags} = details;
+ const {exclusiveExpressions, reading, position, tags} = details;
const morae = jp.getKanaMorae(reading);
const node = this._templateHandler.instantiate('term-pitch-accent');
@@ -319,7 +319,7 @@ class DisplayGenerator {
DisplayGenerator._appendMultiple(n, this.createTag.bind(this), tags);
n = node.querySelector('.term-pitch-accent-expression-list');
- DisplayGenerator._appendMultiple(n, this.createPitchExpression.bind(this), expressions);
+ DisplayGenerator._appendMultiple(n, this.createPitchExpression.bind(this), exclusiveExpressions);
n = node.querySelector('.term-pitch-accent-characters');
for (let i = 0, ii = morae.length; i < ii; ++i) {
@@ -481,6 +481,7 @@ class DisplayGenerator {
static _getPitchInfos(definition) {
const results = new Map();
+ const allExpressions = new Set();
const expressions = definition.expressions;
const sources = Array.isArray(expressions) ? expressions : [definition];
for (const {pitches: expressionPitches, expression} of sources) {
@@ -498,10 +499,22 @@ class DisplayGenerator {
dictionaryResults.push(pitchInfo);
}
pitchInfo.expressions.add(expression);
+ allExpressions.add(expression);
}
}
}
+ for (const dictionaryResults of results.values()) {
+ for (const result of dictionaryResults) {
+ const exclusiveExpressions = [];
+ const resultExpressions = result.expressions;
+ if (!areSetsEqual(resultExpressions, allExpressions)) {
+ exclusiveExpressions.push(...getSetIntersection(resultExpressions, allExpressions));
+ }
+ result.exclusiveExpressions = exclusiveExpressions;
+ }
+ }
+
return [...results.entries()];
}