mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-03-02 06:22:42 -08:00
feat(core): add Electron runtime, services, and app composition
This commit is contained in:
36
src/tokenizers/index.ts
Normal file
36
src/tokenizers/index.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import { MecabTokenizer } from '../mecab-tokenizer';
|
||||
import { MecabStatus, Token } from '../types';
|
||||
|
||||
export interface TokenizerProvider {
|
||||
id: string;
|
||||
checkAvailability: () => Promise<boolean>;
|
||||
tokenize: (text: string) => Promise<Token[] | null>;
|
||||
getStatus: () => MecabStatus;
|
||||
setEnabled: (enabled: boolean) => void;
|
||||
}
|
||||
|
||||
type TokenizerProviderFactory = () => TokenizerProvider;
|
||||
|
||||
const tokenizerProviderFactories = new Map<string, TokenizerProviderFactory>();
|
||||
|
||||
export function registerTokenizerProvider(id: string, factory: TokenizerProviderFactory): void {
|
||||
if (tokenizerProviderFactories.has(id)) {
|
||||
return;
|
||||
}
|
||||
tokenizerProviderFactories.set(id, factory);
|
||||
}
|
||||
|
||||
function registerDefaultTokenizerProviders(): void {
|
||||
registerTokenizerProvider('mecab', () => {
|
||||
const mecab = new MecabTokenizer();
|
||||
return {
|
||||
id: 'mecab',
|
||||
checkAvailability: () => mecab.checkAvailability(),
|
||||
tokenize: (text: string) => mecab.tokenize(text),
|
||||
getStatus: () => mecab.getStatus(),
|
||||
setEnabled: (enabled: boolean) => mecab.setEnabled(enabled),
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
registerDefaultTokenizerProviders();
|
||||
Reference in New Issue
Block a user