From 6569eaa0ac7ddd59077f4ebdf3504b6b73a58dfb Mon Sep 17 00:00:00 2001 From: sudacode Date: Wed, 11 Mar 2026 20:33:33 -0700 Subject: [PATCH] merge with main --- .../character-dictionary-availability.test.ts | 20 +++++++++++++++++++ .../character-dictionary-availability.ts | 10 ++++++++++ 2 files changed, 30 insertions(+) create mode 100644 src/main/runtime/character-dictionary-availability.test.ts create mode 100644 src/main/runtime/character-dictionary-availability.ts diff --git a/src/main/runtime/character-dictionary-availability.test.ts b/src/main/runtime/character-dictionary-availability.test.ts new file mode 100644 index 0000000..77a3aa4 --- /dev/null +++ b/src/main/runtime/character-dictionary-availability.test.ts @@ -0,0 +1,20 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; +import { + getCharacterDictionaryDisabledReason, + isCharacterDictionaryRuntimeEnabled, +} from './character-dictionary-availability'; + +test('character dictionary runtime is enabled when external Yomitan profile is not configured', () => { + assert.equal(isCharacterDictionaryRuntimeEnabled(''), true); + assert.equal(isCharacterDictionaryRuntimeEnabled(' '), true); + assert.equal(getCharacterDictionaryDisabledReason(''), null); +}); + +test('character dictionary runtime is disabled when external Yomitan profile is configured', () => { + assert.equal(isCharacterDictionaryRuntimeEnabled('/tmp/gsm-profile'), false); + assert.equal( + getCharacterDictionaryDisabledReason('/tmp/gsm-profile'), + 'Character dictionary is disabled while yomitan.externalProfilePath is configured.', + ); +}); diff --git a/src/main/runtime/character-dictionary-availability.ts b/src/main/runtime/character-dictionary-availability.ts new file mode 100644 index 0000000..4d74f6b --- /dev/null +++ b/src/main/runtime/character-dictionary-availability.ts @@ -0,0 +1,10 @@ +export function isCharacterDictionaryRuntimeEnabled(externalProfilePath: string): boolean { + return externalProfilePath.trim().length === 0; +} + +export function getCharacterDictionaryDisabledReason(externalProfilePath: string): string | null { + if (isCharacterDictionaryRuntimeEnabled(externalProfilePath)) { + return null; + } + return 'Character dictionary is disabled while yomitan.externalProfilePath is configured.'; +}