mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-03-02 06:22:42 -08:00
fix(subtitle): prioritize known and n+1 colors over frequency
This commit is contained in:
@@ -79,7 +79,7 @@ test('computeWordClass preserves known and n+1 classes while adding JLPT classes
|
|||||||
assert.equal(computeWordClass(nPlusOneJlpt), 'word word-n-plus-one word-jlpt-n2');
|
assert.equal(computeWordClass(nPlusOneJlpt), 'word word-n-plus-one word-jlpt-n2');
|
||||||
});
|
});
|
||||||
|
|
||||||
test('computeWordClass composes known class with frequency class while keeping N+1 exclusive', () => {
|
test('computeWordClass keeps known and N+1 color classes exclusive over frequency classes', () => {
|
||||||
const known = createToken({
|
const known = createToken({
|
||||||
isKnown: true,
|
isKnown: true,
|
||||||
frequencyRank: 10,
|
frequencyRank: 10,
|
||||||
@@ -103,7 +103,7 @@ test('computeWordClass composes known class with frequency class while keeping N
|
|||||||
singleColor: '#000000',
|
singleColor: '#000000',
|
||||||
bandedColors: ['#000000', '#000000', '#000000', '#000000', '#000000'] as const,
|
bandedColors: ['#000000', '#000000', '#000000', '#000000', '#000000'] as const,
|
||||||
}),
|
}),
|
||||||
'word word-known word-frequency-single',
|
'word word-known',
|
||||||
);
|
);
|
||||||
assert.equal(
|
assert.equal(
|
||||||
computeWordClass(nPlusOne, {
|
computeWordClass(nPlusOne, {
|
||||||
@@ -228,10 +228,12 @@ test('getFrequencyRankLabelForToken returns rank only for frequency-colored toke
|
|||||||
};
|
};
|
||||||
const frequencyToken = createToken({ surface: '頻度', frequencyRank: 20 });
|
const frequencyToken = createToken({ surface: '頻度', frequencyRank: 20 });
|
||||||
const knownToken = createToken({ surface: '既知', isKnown: true, frequencyRank: 20 });
|
const knownToken = createToken({ surface: '既知', isKnown: true, frequencyRank: 20 });
|
||||||
|
const nPlusOneToken = createToken({ surface: '目標', isNPlusOneTarget: true, frequencyRank: 20 });
|
||||||
const outOfRangeToken = createToken({ surface: '圏外', frequencyRank: 1000 });
|
const outOfRangeToken = createToken({ surface: '圏外', frequencyRank: 1000 });
|
||||||
|
|
||||||
assert.equal(getFrequencyRankLabelForToken(frequencyToken, settings), '20');
|
assert.equal(getFrequencyRankLabelForToken(frequencyToken, settings), '20');
|
||||||
assert.equal(getFrequencyRankLabelForToken(knownToken, settings), '20');
|
assert.equal(getFrequencyRankLabelForToken(knownToken, settings), '20');
|
||||||
|
assert.equal(getFrequencyRankLabelForToken(nPlusOneToken, settings), '20');
|
||||||
assert.equal(getFrequencyRankLabelForToken(outOfRangeToken, settings), null);
|
assert.equal(getFrequencyRankLabelForToken(outOfRangeToken, settings), null);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -189,10 +189,6 @@ export function getFrequencyRankLabelForToken(
|
|||||||
token: MergedToken,
|
token: MergedToken,
|
||||||
frequencySettings?: Partial<FrequencyRenderSettings>,
|
frequencySettings?: Partial<FrequencyRenderSettings>,
|
||||||
): string | null {
|
): string | null {
|
||||||
if (token.isNPlusOneTarget) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
const resolvedFrequencySettings = {
|
const resolvedFrequencySettings = {
|
||||||
...DEFAULT_FREQUENCY_RENDER_SETTINGS,
|
...DEFAULT_FREQUENCY_RENDER_SETTINGS,
|
||||||
...frequencySettings,
|
...frequencySettings,
|
||||||
@@ -429,7 +425,7 @@ export function computeWordClass(
|
|||||||
classes.push(`word-jlpt-${token.jlptLevel.toLowerCase()}`);
|
classes.push(`word-jlpt-${token.jlptLevel.toLowerCase()}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!token.isNPlusOneTarget) {
|
if (!token.isKnown && !token.isNPlusOneTarget) {
|
||||||
const frequencyClass = getFrequencyDictionaryClass(token, resolvedFrequencySettings);
|
const frequencyClass = getFrequencyDictionaryClass(token, resolvedFrequencySettings);
|
||||||
if (frequencyClass) {
|
if (frequencyClass) {
|
||||||
classes.push(frequencyClass);
|
classes.push(frequencyClass);
|
||||||
|
|||||||
Reference in New Issue
Block a user