parent
50604b25e6
commit
c2ff25b0ec
@ -91,8 +91,9 @@ function jpDistributeFurigana(expression, reading) {
|
|||||||
return fallback;
|
return fallback;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let isAmbiguous = false;
|
||||||
const segmentize = (reading, groups) => {
|
const segmentize = (reading, groups) => {
|
||||||
if (groups.length === 0) {
|
if (groups.length === 0 || isAmbiguous) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -106,14 +107,25 @@ function jpDistributeFurigana(expression, reading) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
let foundSegments = null;
|
||||||
for (let i = reading.length; i >= group.text.length; --i) {
|
for (let i = reading.length; i >= group.text.length; --i) {
|
||||||
const readingUsed = reading.substring(0, i);
|
const readingUsed = reading.substring(0, i);
|
||||||
const readingLeft = reading.substring(i);
|
const readingLeft = reading.substring(i);
|
||||||
const segs = segmentize(readingLeft, groups.slice(1));
|
const segs = segmentize(readingLeft, groups.slice(1));
|
||||||
if (segs) {
|
if (segs) {
|
||||||
return [{text: group.text, furigana: readingUsed}].concat(segs);
|
if (foundSegments !== null) {
|
||||||
|
// more than one way to segmentize the tail, mark as ambiguous
|
||||||
|
isAmbiguous = true;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
foundSegments = [{text: group.text, furigana: readingUsed}].concat(segs);
|
||||||
|
}
|
||||||
|
// there is only one way to segmentize the last non-kana group
|
||||||
|
if (groups.length === 1) {
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return foundSegments;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -129,7 +141,11 @@ function jpDistributeFurigana(expression, reading) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return segmentize(reading, groups) || fallback;
|
const segments = segmentize(reading, groups);
|
||||||
|
if (segments && !isAmbiguous) {
|
||||||
|
return segments;
|
||||||
|
}
|
||||||
|
return fallback;
|
||||||
}
|
}
|
||||||
|
|
||||||
function jpDistributeFuriganaInflected(expression, reading, source) {
|
function jpDistributeFuriganaInflected(expression, reading, source) {
|
||||||
|
Loading…
Reference in New Issue
Block a user